Was ist der Unterschied zwischen "git reset" und "git checkout"?
Ich habe immer an @ gedacgit reset
undgit checkout
as the same, in dem Sinne, dass beide das Projekt auf ein bestimmtes Commit zurückführen. Ich bin jedoch der Meinung, dass sie nicht genau gleich sein können, da dies überflüssig wäre. Was ist der tatsächliche Unterschied zwischen den beiden? Ich bin etwas verwirrt, da der svn nur @ hsvn co
, um das Commit zurückzusetzen.
Das folgendes Diagramm erklärt den Unterschied, wenn auch möglicherweise zu stark vereinfacht oder falsch. Was denkst du? Ist es falsch oder zu stark vereinfacht?
ADDED 2VonC und Charles erklärten die Unterschiede zwischengit reset
undgit checkout
sehr gut. Mein aktuelles Verständnis ist, dassgit reset
setzt alle Änderungen auf ein bestimmtes Commit zurück, währendgit checkout
bereitet sich mehr oder weniger auf eine Niederlassung vor. Ich fand die folgenden beiden Diagramme sehr hilfreich, um zu diesem Verständnis zu gelangen:
ADDED 3
Vonhttp: //think-like-a-git.net/sections/rebase-from-the-ground-up/using-git-cherry-pick-to-simulate-git-rebase.htm, checkout und reset können die Rebase emulieren.
git checkout bar
git reset --hard newbar
git branch -d newbar