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.
Spis treści
- 1 Git revert – wprowadzenie
- 2 Git
- 3 Git commit
- 4 Git revert commit – cofanie zmian
- 5 Git revert last commit – cofanie zmian ostatniego commit’a
- 6 Git revert merge commit
- 7 Git revert merge commit – cofanie commit’a ze zdalnego repozytorium
- 8 Git revert commit – podsumowanie
- 9 20+ BONUSOWYCH materiałów z programowania
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 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 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!