Wie kann ich eine Datei beispielsweise pom.xml
vom Hauptzweig zu einer beliebigen älteren Version in Git unterscheiden?
323
Du kannst tun:
git diff master~20:pom.xml pom.xml
... um Ihren aktuellen Stand pom.xml
mit dem von vor master
20 Revisionen durch den ersten Elternteil zu vergleichen. Sie können master~20
natürlich den Objektnamen (SHA1sum) eines Commits oder eine der vielen anderen Möglichkeiten zum Festlegen einer Revision ersetzen .
Beachten Sie, dass dies tatsächlich die alte pom.xml
mit der Version in Ihrem Arbeitsbaum vergleicht, nicht mit der Version, in der festgeschrieben wurde master
. Wenn Sie das möchten, können Sie stattdessen Folgendes tun:
git diff master~20:pom.xml master:pom.xml
git diff <revision>:foo/ HEAD:foo/
.Zum Beispiel:
quelle
git diff <revision> root/path/file
.Wenn Sie den Unterschied zwischen dem letzten Festschreiben einer einzelnen Datei sehen möchten, können Sie Folgendes tun:
Dies gibt Ihnen den Unterschied der Datei in Git, vergleicht nicht Ihre lokale Datei.
quelle
-1
schrittweise erhöhen, bis Sie die Änderungen erhalten.gitlog () { git log -${3:-p} -${2:-1} $1; }
Verwendet wie:gitlog Rakefile
odergitlog Rakefile 5
undgitlog Rakefile 10 s
. Der erste zeigt einen Unterschied; der zweite zeigt fünf Unterschiede; der dritte zeigt zehn--no-patch
.So sehen Sie, was beim letzten Festschreiben in einer Datei geändert wurde:
Sie können die Zahl (~ 1) in das n-te Commit ändern, mit dem Sie sich unterscheiden möchten.
quelle
HEAD~1
wird<revision>
, was diese Antwort zu einem Duplikat macht.Generische Syntax:
für alle Dateien mit dem Namen "FileName.xml" an einer beliebigen Stelle in Ihrem Repo.
Beachten Sie den Abstand zwischen "-" und "**"
Antwort auf Ihre Frage:
Wie immer bei git können Sie ein Tag / sha1 / "HEAD ^" verwenden, um ein Commit zu identifizieren.
Getestet mit Git 1.9.1 unter Ubuntu.
quelle
Wenn weder begehen ist Ihre HEAD dann die bash Klammernerweiterung beweist wirklich nützlich, vor allem , wenn Ihre Dateinamen lang sind, das obige Beispiel:
Würde werden
Mehr zur Klammererweiterung mit Bash.
quelle
Zum Vergleich mit 5 Commits mit dem aktuellen Commit, beide aktiviert
master
, einfach:Sie können sich auch auf die Commit-Hash-Nummer beziehen. Wenn die Hash-Nummer beispielsweise lautet
x110bd64
, können Sie Folgendes tun, um den Unterschied festzustellen:quelle
git diff -w HEAD origin / master path / to / file
quelle
Funktioniert, wenn Sie nicht auch in der Hauptniederlassung sind.
quelle
Wenn Sie mit einem grafischen Werkzeug gut zurechtkommen (oder es sogar bevorzugen), können Sie:
In gitk können Sie dann auf ein beliebiges Commit klicken (um es "auszuwählen") und mit der rechten Maustaste auf ein anderes Commit klicken, um "Diff this -> selected" oder "Diff selected -> this" im Popup-Menü auszuwählen, je nachdem, welche Reihenfolge Sie bevorzugen.
quelle
Informationen zu Personen, die daran interessiert sind, dasselbe mit GitHub zu tun, finden Sie unter Vergleichen von Commits im Zeitverlauf .
quelle
Wenn Sie beispielsweise eine einzelne Datei in einem Stash unterscheiden müssen, können Sie dies tun
quelle
Wenn Sie nach dem Diff für ein bestimmtes Commit suchen und die Github-Benutzeroberfläche anstelle der Befehlszeile verwenden möchten (sagen wir, Sie möchten es mit anderen Leuten verknüpfen), können Sie Folgendes tun:
Zum Beispiel:
https://github.com/grails/grails-core/commit/02942c5b4d832b856fbc04c186f1d02416895a7e/grails-test-suite-uber/build.gradle
Beachten Sie die Links Zurück und Weiter oben rechts, mit denen Sie durch alle Dateien im Commit navigieren können.
Dies funktioniert jedoch nur für ein bestimmtes Commit, nicht für den Vergleich zwischen zwei beliebigen Versionen.
quelle