Usuwanie historii zatwierdzania Git (zarówno lokalnej, jak i zdalnej)
Chociaż większość z nas wie, że nigdy nie powinniśmy umieszczać żadnych poufnych informacji w repozytorium kodu źródłowego (czy to Git, Subversion, czy cokolwiek innego), zdarzają się sytuacje, w których tak się dzieje.
Przez większość czasu wyobrażam sobie, że dzieje się to za każdym razem, gdy pracujemy nad kodem, a następnie przeskakujemy tam iz powrotem między IDE a terminalem i zatwierdzamy kod, aby upewnić się, że nie tracimy żadnych zmian.
Dzieje się to wystarczająco długo, a potem w końcu zatwierdzamy klucz klienta i klucz klienta lub nazwę użytkownika i hasło lub coś podobnego do repozytorium.
Na szczęście możemy usunąć zatwierdzenia, aby przywrócić nasz kod, ale większość systemów kontroli źródła przechowuje historię wszystkiego (co jest dobrą rzeczą). Ale co, jeśli będziemy musieli usunąć historię zmian Git zarówno z naszych lokalnych, jak i zdalnych repozytoriów?
Usuwanie historii zatwierdzania Git
W tym przykładzie zakładam, że pracujesz z Git i pracujesz z wierszem poleceń (chociaż wyobrażam sobie, że większość GUI pozwoli na to).
Następnie zakładam, że zatwierdzenie, które chcesz usunąć z historii, jest najnowszym zatwierdzeniem i chcesz tylko cofnąć się o jeden krok.
Aby całkowicie usunąć historię zmian git, musisz zrobić tylko dwie rzeczy:
- przebazować do poprzedniego zatwierdzenia,
- popchnij gałąź do pilota.
Aby to zrobić, sprawdź dwa środkowe kroki tutaj :
# First, review the history. (Gotta make sure you're going to roll back to the right place!)
$ git log --pretty=oneline --abbrev-commit
# Remove HEAD back to the commit prior to the one that has sensitive information
# and set equal to the last good commit.
$ git rebase -i HEAD~1
# Push the content to the remote repository and remove it from the history.
$ git push origin +<name of branch>
# If you want to review the history...
$ git log --pretty=oneline --abbrev-commit
Dodatkowe kroki przed i po głównym zatwierdzeniu pozwalają uzyskać wizualną listę zatwierdzeń na wypadek, gdybyś chciał wybrać oddzielny zatwierdzenie, do którego chcesz cofnąć.
I możesz uruchomić polecenie zarówno przed, jak i po pozostałych dwóch poleceniach (jak widać w treści powyżej), aby upewnić się, że lista zatwierdzeń wygląda tak, jak chcesz w historii projektu.