2010-07-30 5 views
5

Ich habe eine Textdatei (.yml), dass ich einige Texte zu meinem System eingeben. Aber jetzt müssen wir wissen, welche neuen Zeilen gleichzeitig sind. Ich dachte, ich benutze git, um unser Problem zu lösen, aber ich kann keinen geklärten Befehl finden, dies zu tun.Verwenden von Git-Diff in der gleichen Datei zwischen ersten und letzten Commit

Ist das möglich?

+0

möglich Duplikat [Git: wie die gleiche Datei zwischen zwei verschiedenen Commits auf dem gleichen Zweig diff] (http://stackoverflow.com/questions/3338126/git -how-to-diff-die-gleiche-Datei-zwischen-zwei-verschiedene-commits-auf-der-gleichen-Zweig –

Antwort

11

Sie können wie so eine Liste der Commits withs etwas bekommen:

git log --abbrev-commit --pretty=oneline

die so etwas wie dies sollte:

commitD Description 
commitC Description 
commitB Description 
commitA Description 

Wählen Sie Ihre zwei Commits und ersetzen sie unter:

git diff <commitA>..<commitB> -- /path/to/file

+0

löste mein Problem, Thnx! –

3

Sie können es mit einer Kommandozeile:

git diff -w `git rev-list HEAD --reverse | head -1`..HEAD -- <path/file> 

Es funktioniert nicht mit einer Zahl von 1 (-1/--max-count 1) verwenden --reverse ... wie es die resultierende Liste umkehrt nach dem Abschneiden. Entweder du benutzt --reverse zusammen mit dem head Befehl oder du benutzt tail -1.

Ich musste die -w für meine Verwendung wegen der Schalter in Zeilenenden und Tab vs. Leerzeichen Verwendung hinzufügen.

Dies funktioniert möglicherweise nicht wie erwartet, wenn die Datei nicht im ersten Commit hinzugefügt wurde! Sie können die obige Zeile ändern:

git diff -w `git rev-list HEAD --reverse -- <path/file> | head -1`..HEAD -- <path/file>