Reset

Reset jest operacją modyfikującą bierzącą linię historyczną naszego lokalnego repozytorium. W wielu przypadkach jest to operacja nieodwracalna!

Tryby resetu

git reset --soft HEAD~<n>
git reset --soft <SHA1>
git reset --mixed HEAD~<n>
git reset --mixed <SHA1>
git reset --hard HEAD~<n>
git reset --hard <SHA1>

Przywrócenie brancha do stanu zdalnego

W czasie naszej pracy kiedy nakładamy zmiany z jednego brancha na drugi popełniamy błąd. Wyobraźmy sobie sytuację, w której mamy branch develop (pobrany ze zdalnego repozytorium) i topic branch OP-3486. Dokonując przykładowo review codu znajdującego się na topic branchu chcemy w naszym IDE zobaczyć wszystkie zmiany wykonane na topic branchu. W tym celu wykonujemy operację:

git checkout develop
git pull
git merge --squash origin/OP-3486

Co by się stało, gdybyśmy zapomnieli o fladze --squash?

git merge origin/OP-3486

Rezultatem takiej operacji była by modyfikacja brancha develop - zawierałby on commity z brancha OP-3486. W przypadku jeśli po stworzeniu commitów na branchu OP-3486 nie ma żadnej nowej aktywności na branchu develop - nie jest to problemem gdyż możemy je usunąć z naszego lokalnego brancha develop za pomocą polecenia git reset --hard.

Jeżeli natomiast commity znajdujące się na branchu OP-3486 "wymieszają się" z commitami z brancha develop - ich usunięce staje się bardziej skomplikowane.

Nalezy przy tym wszystkim pamiętać, że mając w naszym lokalnym repozytorium podłączone zdalne repozytorium (origin) posiadamy jego lokalną kopię (tylko do odczytu) w postaci branchy origin/*. Możemy je wykorzystać aby przywrócić stan brancha develop do tego sprzed merge'a:

git reset --hard origin/develop

Powyższe polecenie usunie wszelkie commity znajdujące się wyłącznie na naszym lokalnym brancy develop.

results matching ""

    No results matching ""