Zawsze o tym myślałem git reset
i git checkout
tak samo, w tym sensie, że oba przywracają projekt do konkretnego zatwierdzenia. Uważam jednak, że nie mogą być dokładnie takie same, ponieważ byłoby to zbędne. Jaka jest faktyczna różnica między nimi? Jestem trochę zdezorientowany, ponieważ svn musi tylko svn co
cofnąć zatwierdzenie.
DODANY
VonC i Charles wyjaśnia różnice między git reset
i git checkout
naprawdę dobrze. Moje obecne rozumienie jest takie, że git reset
przywraca wszystkie zmiany do konkretnego zatwierdzenia, podczas gdy git checkout
mniej więcej przygotowuje się do odgałęzienia. Znalazłem następujące dwa diagramy całkiem przydatne w zrozumieniu:
DODANO 3
Od http://think-like-a-git.net/sections/rebase-from-the-ground-up/using-git-cherry-pick-to-simulate-git-rebase.html , kasy i reset mogą emulować rebase.
git checkout bar
git reset --hard newbar
git branch -d newbar
-- files
wariantów; nie jestem pewien.) Ten schemat pokazuje, że główna różnica polega na tym, czy wpływają one na indeks, czy na WD. Zobacz moją odpowiedź na ten temat. Drugi i trzeci schemat są bardzo pomocne, aby zobaczyć prawdziwą różnicę. Czwarty i piąty schemat są przydatne do sprawdzenia, czy rozumiesz, co robią te polecenia, ale tak naprawdę nie pomoże ci się tam dostać.
think-like-a-git.net
artykule) są wymagane, aby zapobiec utracie danych.