Frage

Ich möchte zwei Zweige zusammenführen, die für eine Weile getrennt wurden, und wollte, welche Dateien wissen, geändert wurden.

über diesen Link Came: http://linux.yyz.us/git-howto.html die war sehr nützlich.

Die Werkzeuge Zweige vergleichen mir begegnet ist, sind:

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

Frage mich, ob es so etwas wie „git status master..branch“, um nur die Dateien zu sehen, die zwischen den beiden Zweigen unterschiedlich sind.

Ohne ein neues Werkzeug zu schaffen, ich denke, das in der Nähe ist, dass bekommen jetzt zu tun (was natürlich wird wiederholt angezeigt, wenn eine Datei mehr als einmal geändert wurde):

  • git diff master..branch | grep "^diff"

Frage mich, ob es etwas, was ich verpasst ...

War es hilfreich?

Lösung

Um den aktuellen Zweig gegen master Zweig vergleichen:

$ git diff --name-status master

Zum Vergleich aller zwei Zweige:

$ git diff --name-status firstbranch..yourBranchName

Informieren Sie sich über git diff in der rel="noreferrer">.

Andere Tipps

Versuchen

$ git diff --stat --color master..branchName

Dies wird Ihnen weitere Informationen über jede Änderung, während immer noch die gleiche Anzahl von Zeilen verwendet wird.

Sie können auch die Zweige Flip ein noch klareres Bild von der Differenz zu erhalten, wenn Sie die andere Art und Weise zu verschmelzen sind:

$ git diff --stat --color branchName..master

Beachten Sie auch, dass git billig und einfach Verzweigung hat. Wenn ich eine Zusammenführung denke problematisch sein könnte ich einen Zweig für die Zusammenführung erstellen. Also, wenn master die Änderungen hat Ich möchte verschmelzen und ba ist mein Zweig, der den Code vom Master muss ich könnte wie folgt vorgehen:

git checkout ba
git checkout -b ba-merge
git merge master
.... review new code and fix conflicts....
git commit
git checkout ba
git merge ba-merge
git branch -d ba-merge
git merge master

Das Endergebnis ist, dass ich bekam Zweig die Zusammenführung versuchen, auf einem Wegwerf-vor mit meinem Zweig zu schrauben. Wenn ich mich selbst verhaken kann ich nur den ba-merge Zweig löschen und neu beginnen.

Wenn jemand versucht, eine Diff-Datei aus zwei Zweigen zu generieren:

git diff master..otherbranch > myDiffFile.diff

Es gibt auch ein GUI-basiertes Verfahren.

Sie können mit gitk .

  1. Ausführen:

    $ gitk --all
    
  2. Rechtsklick auf eine Festschreibung eines Zweigs und wählen Sie Mark begehen diese im Pop-up-Menü.

  3. Recht auf klicken, um ein von einem anderen Zweig begeht und wählen Sie Diff this -> commit markiert oder Diff markiert begehen -> das .

Dann wird es eine geänderte Dateien Liste in der rechten unteren Panel und diff Details in der linken unteren Platte sein.

Eine weitere Option, mit meld in diesem Fall:

git difftool -d master otherbranch

Auf diese Weise kann nicht nur die Unterschiede zwischen den Dateien sehen, sondern bietet auch eine einfache Möglichkeit, in eine bestimmte Datei zu zeigen und klicken.

, dass git Hinweis macht es einfach, nur die Zusammenführung ausprobieren und wieder von Problemen weg, wenn Sie das Ergebnis nicht gefällt. Es könnte einfacher sein, als für mögliche Probleme im Voraus an.

Und wenn Sie nach Änderungen suchen nur unter bestimmten Datei (en), dann:

git diff branch1 branch2 -- myfile1.js myfile2.js

branch1 ist optional und Ihr aktueller Zweig (die Zweig Sie sind) wird standardmäßig in Betracht gezogen werden, wenn branch1 nicht vorgesehen ist. z:

git diff master -- controller/index.js

Wenn kollaborativ arbeiten oder auf mehrere Funktionen auf einmal, es ist üblich, dass die stromaufwärts oder sogar Ihre Master-Arbeit enthält, die nicht in Ihrer Branche enthalten ist, und wird nicht ordnungsgemäß in Grund diffs erscheinen.

Wenn Ihr Upstream verschoben haben kann, sollten Sie dies tun:

git fetch
git diff origin/master...

Just mit git diff-Master kann einschließen oder nicht einschließen, relevante Änderungen.

Es gibt viele Antworten hier, aber ich wollte etwas hinzufügen, die ich häufig verwenden. Wenn Sie sich in einem der Zweige, die ich Ihnen eine der folgenden Regel tun vergleichen möchten. Im Interesse dieser Antwort werden wir sagen, dass wir in unserem Nebenzweig sind. Je nachdem, welche Ansicht man zu der Zeit benötigt, abhängig davon, welche Sie sich entscheiden, aber die meiste Zeit verwende ich die zweite Option der beiden. Die erste Option praktisch sein kann, wenn Sie versuchen, eine Originalkopie um wieder zurück - so oder so, die beide den Job zu erledigen

Dies vergleicht Master an den Zweig, in der wir leben (was sekundär ist) und der Original-Code werden die hinzugefügten Zeilen und der neue Code wird die entfernten Linien betrachtet werden

git diff ..master

oder

Dies wird auch vergleichen Master an den Zweig, in der wir leben (was sekundär ist) und der Original-Code werden die alten Linien und der neue Code werden die neuen Linien

sein sein
git diff master..

Wenn Sie GUI mögen und Windows verwenden, hier ist eine einfache Art und Weise.

  1. Herunterladen WinMerge
  2. Schauen Sie sich die beiden Zweige in verschiedene Ordner
  3. Sie einen Ordner für Ordner mit WinMerge vergleichen. Sie können auch leicht Änderungen vornehmen, wenn einer der Zweige ist, die Sie gerade arbeiten.
git diff revision_n revision_m

Wenn revision_n und revision_m sind aufeinanderfolgende Commits gibt es dann gleich wie git show revision_m

Für Menschen, die für eine GUI-Lösung suchen, Git Cola eine sehr schöne „Niederlassung hat Diff Viewer ( Diff -> Branchen .. ).

Sie können auch eine visuelle diff .

Zum Beispiel, wenn Sie mit Sourcetree , können Sie einfach select alle zwei Commits in Protokollansicht .

(ich persönlich lieber ein GUI in den meisten Fällen für diese Verwendung, und ich bin Entsendung dies für diejenigen, die mit GUI-Optionen vertraut sein.)

Sie können auch leicht Zweige vergleichen für geänderte Dateien zum Beispiel mit TortoiseGit . Klicken Sie einfach auf durchsuchen Referenzen und wählen Sie die Zweige Sie vergleichen möchten.

Zum Beispiel, wenn Sie vergleichen Ihre Branche mit Master werden Sie als Ergebnis Liste der Dateien erhalten, die in Master geändert werden , wenn Sie entscheiden, zu fusionieren your-Zweig in Master .

remmber, dass Sie anderes Ergebnis haben, wenn Sie vergleichen Master mit your-Zweig und your-Zweig mit Master .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top