Ich habe immer git resetund git checkoutin dem Sinne daran gedacht , dass beide das Projekt zu einem bestimmten Commit zurückbringen. 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 svn codas Commit zurücksetzen muss .
HINZUGEFÜGT
VonC und Charles haben die Unterschiede zwischen git resetund git checkoutwirklich gut erklärt. Mein derzeitiges Verständnis ist, dass git resetalle Änderungen auf ein bestimmtes Commit zurückgesetzt werden, während git checkoutmehr oder weniger auf einen Zweig vorbereitet wird. Ich fand die folgenden zwei Diagramme sehr nützlich, um zu diesem Verständnis zu gelangen:

HINZUGEFÜGT 3
Unter http://think-like-a-git.net/sections/rebase-from-the-ground-up/using-git-cherry-pick-to-simulate-git-rebase.html kann das Auschecken und Zurücksetzen emuliert werden die Rebase.
git checkout bar
git reset --hard newbar
git branch -d newbar
-- filesVarianten in Ordnung sein ; ich bin mir nicht sicher.) In diesem Diagramm sieht es so aus, als ob der Hauptunterschied darin besteht, ob sie den Index oder den WD beeinflussen. Siehe meine Antwort dazu. Das 2. und 3. Diagramm sind sehr hilfreich, um den tatsächlichen Unterschied zu erkennen. Das 4. und 5. Diagramm sind nützlich, um zu überprüfen, ob Sie verstehen, was diese Befehle bewirken, aber nicht wirklich dabei helfen, dorthin zu gelangen.
think-like-a-git.netArtikel angegeben) erforderlich sind, um Datenverlust zu vermeiden.


