logo

Jak cofnąć ostatnie zatwierdzenie

Jako inżynier oprogramowania lub twórca stron internetowych możemy wymagać przesyłania wielu zatwierdzeń do naszego repozytorium Git.

Istnieją jednak inne przypadki, w których chcemy zatwierdzić pliki, które nie zostaną przesłane do naszego repozytorium Git. Czasami przed wydaniem jakiegokolwiek zatwierdzenia możemy chcieć wprowadzić dodatkowe zmiany.

W rezultacie wymagamy cofnięcia ostatniego zatwierdzenia za pośrednictwem naszego repozytorium Git. Zobaczymy, jak możemy cofnąć ostatnie zatwierdzenie w tym temacie.

Cofnij ostatnie zatwierdzenie Git wraz z resetem

Możemy łatwo cofnąć ostatnie zatwierdzenie git, wykonując polecenie, tj. „reset Gita” wraz z opcją, tj. '-miękki' który ochroni wszystkie zmiany dokonane w naszych plikach. Musimy opisać zatwierdzenie cofania, czyli „HEAD ~ 1”.

Ostatnie zatwierdzenie gita zostanie usunięte z naszego repozytorium Git.

 $ git reset --soft HEAD~1 

W tym zapisie

„GŁOWA ~ 1”: Oznacza to, że chcemy zresetować tę HEAD do pojedynczego zatwierdzenia przed wejściem do historii dziennika.

usunięcie z drzewa wyszukiwania binarnego
 $ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2) 

Jaki będzie skutek powyższego polecenia?

Polecenie, tj. „reset Gita” można postrzegać jako polecenie, tj. przeciwieństwo „git dodaj” , zasadniczo wstawiając pliki do indeksu Git.

Jeśli opisujesz opcję '-miękki' , Git w ogóle nie zmieni plików w indeksie lub katalogu wykonawczym.

Na przykład do naszego ostatniego zatwierdzenia dołączyliśmy dwa pliki, chociaż chcemy wprowadzić pewne zmiany w tym pliku.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 Second commit *7083e29 Initial repository commit 

W rezultacie złożymy wniosek „reset gita” wraz z opcją '-miękki' aby cofnąć ostatnie zatwierdzenie i wprowadzić dodatkowe zmiany.

 $ git reset --soft HEAD~1 $ git status 

Nad kierownikiem oddziału

Nasza gałąź jest master/origin z wyprzedzeniem za pomocą zatwierdzenia 1 (zastosuj „git push” do publikowania naszych lokalnych zatwierdzeń).

chmod 755

Zmiany, które należy wprowadzić:

 (apply 'git restore --staged …' to unstage) 

nowy plik: plik1

 $ git log --oneline --graph *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Jak widzimy, plik nadal znajduje się w indeksie po cofnięciu ostatniego zatwierdzenia (modyfikacje, które należy zatwierdzić), mimo że zatwierdzenie zostało usunięte.

Pomyślnie wykonaliśmy ostatnie zatwierdzenie w naszym repozytorium.

Twarde resetowanie zatwierdzenia Git

W powyższej sekcji możemy rozważyć, że możemy to łatwo zrobić cofnij ostatnie zatwierdzenie i zachowaj modyfikacje wykonane dla dowolnego pliku wewnątrz indeksu. Jednak w niektórych sytuacjach chcemy po prostu usunąć zmiany i zatwierdzenia dokonane w dowolnym pliku.

Jest to cel opcji, tj. '-twardy' .

ile 0 na miliard

Aby cofnąć ostatnie zatwierdzenie i usunąć wszystkie modyfikacje w indeksie i katalogu, wykonaj polecenie, tj. „reset gita” wraz z opcją, tj. '-twardy' i opisz zatwierdzenie przed poleceniem HEAD („GŁOWA ~ 1”) .

 $ git reset --hard HEAD~1 

Każde zatwierdzenie i modyfikacja zostaną usunięte z indeksu i katalogu po użyciu '--twardy' Komenda. Dlatego powinniśmy zachować ostrożność.

Na przykład zatwierdziliśmy nowy plik o nazwie „plik1” w naszym repozytorium Git.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Załóżmy teraz, że chcemy cofnąć ostatnie zatwierdzenie i usunąć wszystkie zmiany.

 $ git reset --hard HEAD~1 

Teraz HEAD jest włączony 90f8bb1 Drugie zatwierdzenie

Sprawdźmy teraz stan naszego repozytorium git.

 $ git status 

Nad kierownikiem oddziału

Nasza gałąź jest współczesna z master/Origin (zastosuj polecenie „git push” do publikowania naszych lokalnych zatwierdzeń).

wilk kontra lis

Teraz nie ma już nic do popełniania, a drzewo robocze jest czyste.

Mieszane Zresetuj zatwierdzenie Git

Zachowaj modyfikacje w naszym katalogu roboczym, NIE w indeksie. Musimy zastosować polecenie, tj ., 'reset gita' wraz z opcją, tj. '-mieszany' . Po tym poleceniu musimy po prostu dodać „HEAD~1” do ostatniego zatwierdzenia.

 $ git reset --mixed HEAD~1 

Na przykład, do każdego zatwierdzenia, które chcemy cofnąć, umieściliśmy dowolny plik o nazwie „plik1”.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Po prostu wykonujemy polecenie, tj. „reset gita” wraz z opcją, tj. '-mieszany' do cofania ostatniego zatwierdzenia.

W rezultacie '-mieszany' polecenie to a 'mieszać' wśród twardego i miękkiego resetu, więc jego nazwa.

Nad kierownikiem oddziału

Nasza gałąź jest master/origin z wyprzedzeniem za pomocą zatwierdzenia 1 (zastosuj „git push” do publikowania naszych lokalnych zatwierdzeń).

Nieśledzone pliki: (zastosuj „git add…”, aby dodać wewnątrz to, co zostanie zatwierdzone)

 file1 

Nic nie jest uwzględnione do zatwierdzenia, ale obecne są nieśledzone pliki (zastosuj „git track” do śledzenia).

Wykryliśmy zatem inną praktykę polegającą na cofaniu ostatniego zatwierdzenia poprzez zachowywanie modyfikacji dokonanych w plikach.

Cofnij ostatnie zatwierdzenie wraz z przywróceniem

Zastosuj polecenie, tj. „git przywróć” i opisz zatwierdzenie, które ma zostać cofnięte, tj. 'GŁOWA' do zatwierdzenia historii w celu przywrócenia ostatniego zatwierdzenia Git.

 $ git revert HEAD 

Polecenie „git revert” różni się od polecenia „git reset”, ponieważ może zarejestrować każde nowe zatwierdzenie wraz z pewnymi modyfikacjami zdefiniowanymi przez degenerację ostatniego zatwierdzenia.

Możemy opisać „HEAD~1” za pomocą polecenia „git reset”, ponieważ to polecenie reset ustawi dowolne nowe miejsce HEAD podczas degenerowania opisanego zatwierdzenia.

W rezultacie ponownie zatwierdzimy modyfikacje niektórych plików w celu przywrócenia i uznamy je za niewykonane. Zatwierdziliśmy dowolny nowy plik w naszym repozytorium Git, ale chcemy zdegenerować to zatwierdzenie.

programy w Javie
 $ git log --oneline -graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Jeśli wykonasz polecenie „git revert”, Git otworzy nasz edytor tekstu, aby automatycznie zatwierdzić modyfikacje.

Jak cofnąć ostatnie zatwierdzenie

Po zakończeniu wykonywania komunikatu zatwierdzenia pojawi się nowa wiadomość wraz z nowym skrótem zatwierdzenia.

 [master 2d40a2c] Revert 'Added a new file named as file1' 1 file changed, 1 deletion(-) delete mode 100644 file1 

Jeśli będziemy musieli ponownie sprawdzić naszą historię Gita, możemy zauważyć nowe zatwierdzenie dodane w celu cofnięcia ostatniego zatwierdzenia za pośrednictwem naszego repozytorium.

 $ git log --oneline --graph *2d40a2c (HEAD -> master) Revert 'Added a new file named file1' *1fa26e9 Added a new file named as file1 *ee8b133 Second commit *a3bdedf Initial commit