Git - reset bo czasem trzeba cofnąć
Stronę tą wyświetlono już: 596 razy
Polecenie reset umożliwia resetowanie commit-owanych ale tylko w kolejności od najstarszego w dół. Nie można cofnąć zmian konkretnego wybranego commit-a, który znajduje się pomiędzy innymi bez cofnięcia zmian wcześniej utworzonych commitów.
Resetowanie z domyślnymi ustawieniami powoduje usunięcie
git add todo.txt git commit -m "new todo things" [005_add_merging_operations_types 8ecb7c1] new todo things 1 file changed, 1 insertion(+)
a następnie usunę:
git reset HEAD~1 Unstaged changes after reset: M todo.txt
Używając log możesz przekonać się, że commit w tajemniczych okolicznościach zniknął. Opcja HEAD~1 określa ile commit-ów ma zostać cofniętych.
Jeżeli teraz wpiszesz:
git status
i zatwierdzisz, to możesz zobaczyć, że twoja zmiana istnieje ale nie została wybrana:
On branch 005_add_merging_operations_types Changes not staged for commit: (use "git add..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) modified: todo.txt no changes added to commit (use "git add" and/or "git commit -a")
Istnieją też inne opcje cofania zmian, np:
git reset --soft HEAD~1
I cóż teraz status pokaże:
git status On branch 005_add_merging_operations_types Changes to be committed: (use "git reset HEAD..." to unstage) modified: todo.txt
Ostatni sposób cofania zmian usuwający całkowicie zmiany to:
git reset --hard HEAD~1 HEAD is now at 9d2feaf add style for ul elements
Po tym poleceniu status pokaże:
git status On branch 005_add_merging_operations_types nothing to commit, working tree clean
Także jak widać trzeba uważać z ostatnią opcją.