2016-08-03 4 views
0

Ich habe git checkout -- somefile.txt zum Auschecken von Git-Dateien geübt, für den Fall, dass ich vermasselt. Wie weiß Git, welche Datei von welchem ​​Commit ausgecheckt wird?Woher weiß git, welche Datei beim Auschecken geprüft werden soll - somefile?

: Ich schreibe git checkout -- index.html. Woher weiß Git, von welchem ​​Commit sie index.html übernehmen, zumal Ihre Commit-Liste immer größer wird?

+0

Um zu verdeutlichen, meinst du 'git checkout - index.html', mit dem Leerzeichen, oder' git checkout --index.html', ohne den Platz? – hugomg

+0

In den Abstand geändert – developer098

Antwort

3

Mit git checkout mit einem Pfad, aber ohne Angabe eines Commits wird die Datei aus dem Index, d. H. Der Staging-Bereich. Wenn Sie beispielsweise einige Änderungen an einer Datei vorgenommen und diese dann weiter geändert haben und nur diese zusätzlichen Änderungen rückgängig machen möchten, können Sie diese Änderungen mit git checkout -- some/path rückgängig machen.

Wenn Ihr Index sauber ist, d. H. Bei Verwendung von git status nichts als abgestuft gemeldet wird, entspricht der Index HEAD, dem aktuell ausgecheckten Zweig (oder Commit). Das ist also eine Möglichkeit, Änderungen rückgängig zu machen.

Natürlich wird bei der Angabe eines Commits mit git checkout immer die Dateiversion dieser genauen Version verwendet, unabhängig von Ihrem Index.

+3

Eigentlich ist das falsch (ich dachte das gleiche zuerst): 'git checkout - some/path' überprüft die Version * aus dem Index *, nicht aus dem' HEAD'-Commit. In vielen Fällen handelt es sich um den gleichen zugrunde liegenden Blob, aber das macht keinen Unterschied. – torek

+0

@torek Sie haben absolut Recht, ich denke normalerweise nur über Situationen mit einem sauberen Index beim Schreiben von Antworten, obwohl ich den Checkout täglich genau zum Zweck der Rückgängigmachung nicht gestellter Änderungen verwende .. Danke! – poke

Verwandte Themen