Zmieniająca się historia
Jeśli jest to ostatni zatwierdzenie, możesz po prostu to zrobić:
git commit --amend
Spowoduje to wyświetlenie edytora z ostatnią wiadomością zatwierdzenia i umożliwi edycję wiadomości. (Możesz użyć, -m
jeśli chcesz usunąć starą wiadomość i użyć nowej).
Popychanie
A potem, kiedy naciskasz, zrób to:
git push --force-with-lease <repository> <branch>
Lub możesz użyć „+”:
git push <repository> +<branch>
Lub możesz użyć --force
:
git push --force <repository> <branch>
Zachowaj ostrożność podczas korzystania z tych poleceń.
Jeśli ktoś wprowadził zmiany do tej samej gałęzi, prawdopodobnie chcesz uniknąć ich zniszczenia. Ta --force-with-lease
opcja jest najbezpieczniejsza, ponieważ zostanie przerwana, jeśli wystąpią jakiekolwiek zmiany na wcześniejszych etapach (
Jeśli nie określisz gałęzi wyraźnie, Git użyje domyślnych ustawień wypychania. Jeśli domyślnym ustawieniem wypychania jest „dopasowanie”, możesz zniszczyć zmiany w kilku oddziałach jednocześnie.
Ciągnięcie / pobieranie później
Każdy, kto już ściągnął, otrzyma teraz komunikat o błędzie i będzie musiał zaktualizować (zakładając, że sami nie wprowadzają żadnych zmian), wykonując coś takiego:
git fetch origin
git reset --hard origin/master # Loses local commits
Zachowaj ostrożność podczas używania reset --hard
. Jeśli masz zmiany w oddziale, zmiany te zostaną zniszczone.
Uwaga na temat modyfikacji historii
Zniszczone dane to tak naprawdę stary komunikat zatwierdzenia, ale --force
nie wie o tym i chętnie usunie także inne dane. Pomyśl więc o tym: --force
„Chcę zniszczyć dane i wiem na pewno, które dane są niszczone”. Ale kiedy zatwierdzone są zniszczone dane, często można odzyskać stare zatwierdzenia z dziennika ponownego logowania - dane są faktycznie osierocone zamiast niszczone (chociaż osierocone zatwierdzenia są okresowo usuwane).
Jeśli nie uważasz, że niszczysz dane, trzymaj się z dala od --force
... złych rzeczy może się zdarzyć .
Dlatego --force-with-lease
jest nieco bezpieczniejszy.