Zawsze o tym myślałem git reset i git checkouttak 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 cocofnąć zatwierdzenie.
DODANY
VonC i Charles wyjaśnia różnice między git reseti git checkoutnaprawdę dobrze. Moje obecne rozumienie jest takie, że git resetprzywraca wszystkie zmiany do konkretnego zatwierdzenia, podczas gdy git checkoutmniej 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
-- fileswariantó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.netartykule) są wymagane, aby zapobiec utracie danych.


