Frage Wie vergleicht man Dateien aus zwei verschiedenen Zweigen?


Ich habe ein Skript, das in einem Zweig funktioniert und in einem anderen unterbrochen ist. Ich möchte die beiden Versionen nebeneinander betrachten und sehen, was anders ist. Gibt es irgendwelche Möglichkeiten, dies zu tun?

Deutlich sein Ich suche kein Vergleichstool (Ich benutze Beyond Compare). Ich suche nach einem git diff-Befehl, der es mir ermöglicht, die Master-Version mit meiner aktuellen Zweigversion zu vergleichen, um zu sehen, was sich geändert hat. Ich bin nicht in der Mitte einer Zusammenführung oder so etwas. Ich möchte nur etwas sagen wie

git diff mybranch/myfile.cs master/myfile.cs

1086
2017-11-04 18:04


Ursprung


Antworten:


git diff kann Ihnen den Unterschied zwischen zwei Commits anzeigen:

git diff mybranch master -- myfile.cs

Oder gleichwertig:

git diff mybranch..master -- myfile.cs

Verwenden Sie die letztere Syntax, wenn beide Seiten sind HEAD es kann weggelassen werden (z.B. master.. vergleicht master zu HEAD).

Das könnte Sie auch interessieren mybranch...master (von git diff Dokumente):

Dieses Formular dient zum Anzeigen der Änderungen an dem Zweig, der den Zweig enthält, und bis zum zweiten Zweig <commit>, beginnend bei einem gemeinsamen Vorfahren beider <commit>. git diff A...B ist äquivalent zu git diff $(git-merge-base A B) B.

Mit anderen Worten, dies wird eine Differenz von Änderungen in geben master seit es sich von mybranch (aber ohne neue Änderungen seither in mybranch).


In allen Fällen -- Trennzeichen, bevor der Dateiname das Ende der Befehlszeilenflags anzeigt. Dies ist optional, es sei denn, Git wird verwirrt, wenn sich das Argument auf ein Commit oder eine Datei bezieht, aber es ist keine schlechte Angewohnheit, sich damit zu befassen. Sehen https://stackoverflow.com/a/13321491/54249 für ein paar Beispiele.


Die gleichen Argumente können übergeben werden git difftool wenn Sie eine konfiguriert haben.


1573
2017-11-04 18:13



Du kannst das: git diff branch1:file branch2:file

Wenn Sie difftool konfiguriert haben, können Sie auch: git difftool branch1:file branch2:file

Verwandte Frage: Wie zeige ich git diff-Ausgabe mit visual diff-Programm an


308
2017-11-04 18:12



Modernere Syntax:

git diff ..master path/to/file

Das Doppelpunktpräfix bedeutet "vom aktuellen Arbeitsverzeichnis zu". Du kannst auch sagen:

  • master..d.h. das Gegenteil von oben. Das ist das Gleiche wie master.
  • mybranch..master, die explizit auf einen anderen als den aktuellen Arbeitsbaum verweist.
  • v2.0.1..masterauf einen Tag zu verweisen.
  • [refspec]..[refspec], im Grunde alles, was als Code-Status für Git identifizierbar ist.

125
2018-06-25 00:41



Ich tue es einfach git diff branch1 branch2 path/to/file

Dies prüft auf Unterschiede zwischen den Dateien. Änderungen in branch1 wäre in rot. Änderungen in branch2 wäre in grün.

Das wird angenommen branch1 ist die Vergangenheit und branch2 ist die Zukunft. Sie können dies umkehren, indem Sie die Reihenfolge der Zweige im Diff umgekehrt: git diff branch2 branch1


8
2018-05-22 14:14



Es gibt viele Möglichkeiten, Dateien aus zwei verschiedenen Zweigen zu vergleichen:

  • Option 1: Wenn Sie die Datei von einem bestimmten Zweig mit einem anderen Zweig vergleichen möchten:

    git diff branch1name branch2name path/to/file
    

    Beispiel:

    git diff mybranch/myfile.cs mysecondbranch/myfile.cs
    

    In diesem Beispiel vergleichen Sie die Datei im "mybranch" Zweig mit der   Datei im Zweig "mysecondbranch".

  • Option 2: Einfacher Weg:

     git diff branch1:file branch2:file
    

    Beispiel:

     git diff mybranch:myfile.cs mysecondbranch:myfile.cs
    

    Dieses Beispiel ähnelt der Option 1.

  • Option 3: Wenn Sie Ihr aktuelles Arbeitsverzeichnis mit einem Zweig vergleichen möchten:

    git diff ..someBranch path/to/file
    

    Beispiel:

    git diff ..master myfile.cs
    

    In diesem Beispiel vergleichen Sie die Datei von Ihrem tatsächlichen Zweig zu   die Datei im Master-Zweig.


7
2018-04-04 13:34



Zustimmung zu der von @dahlbyk vorgeschlagenen Antwort. Wenn Sie möchten, dass das Diff in eine Diff-Datei für Code-Reviews geschrieben wird, verwenden Sie den folgenden Befehl.

git diff branch master -- filepath/filename.extension > filename.diff --cached

2
2017-10-06 07:19



Um zwei Dateien in der Git-Bash zu vergleichen, müssen Sie den folgenden Befehl verwenden:

git diff ..master - Dateiname.extension

Dieser Befehl zeigt den Unterschied in zwei Dateien in der Bash selbst.


0
2018-01-17 04:26