Ich habe immer git reset
und git checkout
in 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 co
das Commit zurücksetzen muss .
HINZUGEFÜGT
VonC und Charles haben die Unterschiede zwischen git reset
und git checkout
wirklich gut erklärt. Mein derzeitiges Verständnis ist, dass git reset
alle Änderungen auf ein bestimmtes Commit zurückgesetzt werden, während git checkout
mehr 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
-- files
Varianten 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.net
Artikel angegeben) erforderlich sind, um Datenverlust zu vermeiden.