Git revert – git revert commit, revert last commit

Git revert

Git jako najpopularniejszy rozproszony system kontroli wersji – może się pochwalić rozbudowanym zbiorem funkcjonalności oraz różnego rodzaju integracji – co pozwala wykorzystać go swobodnie w wielu codziennych zadaniach.
W ramach tego materiału dowiesz się jak cofnąć zapisane już zmiany (git revert commit) w swoim lokalnym repozytorium wykorzystując komendę git revert.

Git revert – wprowadzenie

Z tego materiału dowiesz się:

  • Jak cofać zapisane zmiany za pomocą komendy git revert?
  • Jak wycofać ostatnią dokonaną zmianę w historii (git revert last commit)?
  • Jak wycofać zmergowaną już zmianę (git revert merge)?

Git

W ramach tego materiału zajmiemy się przede wszystkim cofaniem zmian w Gicie (ang. git revert commit) – natomiast kompletny tutorial Git znajdziesz poniżej – tam również zapoznasz się ze stanami plików w git, które z punktu widzenia cofania zmian są bardzo istotne.

➡ ZOBACZ 👉: Git tutorial | stash, rebase, commit, merge, checkout, push i clone

Git commit

Git revert cofa zmiany wprowadzone przez git commit. Jeżeli chcesz bliżej zapoznać się z tematem commit’a (zapisywaniem zmian) – to zapraszam do dodatkowych materiałów:

➡ ZOBACZ 👉: Git commit | git commit amend.

Git revert commit – cofanie zmian

W celu wycofania zmian, które zostały już wysłane do zdalnego repozytorium, można skorzystać z commitów wycofujących, czyli z komendy git revert. Ten mechanizm nie modyfikuje historii (w przeciwieństwie do np. git commit amend), a generuje commit, który jest przeciwieństwem zmiany, którą chcemy wycofać.

Przykładowa komenda git revert – dla konkretnego commita:

git revert 2b5ed9d
 

Komenda git revert wymagana podania namiarów na commit, który chcemy wycofać – w tym wypadku wystarczył fragment hasha: 2b5ed9d.

git revert – git revert last commit

Git revert posiada kilka dodatkowych opcji tzw. flag, których specyfikację możesz znaleźć w dokumentacji Git’a używając komendy git revert –help:

git revert - git revert options

 

Git revert last commit – cofanie zmian ostatniego commit’a

Jeżeli ostatnio zapisana przez Ciebie zmiana (ang. commit), okaże się niepożądaną zmianą, którą chcesz wycofać – możesz postąpić w identyczny sposób, jak przy cofaniu dowolnego innego commita.
Czyli korzystamy z komendy: git revert <hash>,
gdzie pod hash podstawiamy identyfikator ostatniego commita.

Historię wszystkich commitów możesz podejrzeć, np. korzystając z komendy: git log.

 
git revert 3d4ed9d 

Git revert merge commit

W przeciwieństwie do innych commit’ów – merge commit jest commit’em, który ma przynajmniej dwóch rodziców.
Na przykład, gdy gałąź feature jest mergowana z gałęzią master, nowy commit jest tworzony na gałęzi master, i ma on dwóch rodziców: poprzedniego head’a gałęzi master i head’a gałęzi feature.

Oznacza to, że oprócz naszych zmian w merge commicie znajdują się zmiany kogoś innego.

Można cofnąć zmiany zarówno nasze, jak i drugiej osoby.
Cofając zmiany, należy wskazać ścieżkę, z której zmiany mają pozostać:

  • -m 1 – zostają zmiany, które druga osoba zrobiła na masterze, natomiast Twoje zmiany zostaną wycofane
 
git revert -m 1 2b5ed10e 
  • -m 2 – Twoje zmiany pozostają , a zmiany drugiej osoby zostaną wycofane
 
git revert -m 2 2b5ed10e 

Chcąc sprawdzić hashe commit’ów „rodziców”, możesz to zrobić, wykonując komendę: git show HEAD (Można również pominąć HEAD, ponieważ jest to domyślny parametr).

 
git show HEAD

Merge: 1c7ed20e 2d7fd11e

Od lewej jest hash commit’a m1 (ang. parent side of the merge), a następnie m2.

Git show jest komendą, która ma znacznie więcej zastosowań poza wskazywaniem samych rodziców merge commit’a – może ja wykorzystać np. aby pokazywać:

  • bloby (ang. blobs – binary large objects) – prezentuje zawartość blob’a,
  • commit’y (ang. commits) – pokazuje opis zmian i tekstową różnicę,
  • drzewa (ang. trees) – pokazuje nazwy składowych drzewa,
  • tagi (ang. tags) – pokazuje wiadomość tag’a.

Git revert merge commit – cofanie commit’a ze zdalnego repozytorium

W przypadku, gdy niechciane zmiany „wysłaliśmy” (ang. git push) już na zdalne repozytorium, należy wycofać zmianę za pomocą komendy: git revert -m 1 <merge commit hash> – jak opisałem we wcześniejszym akapicie.

Następnie zmiany wypychamy na zdalne repozytorium, używając komendy: git push.

Git revert commit – podsumowanie

W ramach tego materiału przećwiczyliśmy cofanie zmian w naszym lokalnym repozytorium (ang. git revert commit), a także wycofywanie już zmergowanej zmiany (ang. git revert merge commit).
Jeżeli chcesz kontynuować swoją przygodę z gitem – to zapraszam do dodatkowych materiałów:

➡ ZOBACZ 👉: Git tutorial | stash, rebase, commit, merge, checkout, push i clone


20+ BONUSOWYCH materiałów z programowania

e-book – „8 rzeczy, które musisz wiedzieć, żeby dostać pracę jako programista”,
e-book – „Java Cheat Sheet”,
checklista – „Pytania rekrutacyjne”
i wiele, wiele wiecej!

Jak zostać programistą

No comments
Share:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *