Ich möchte zwei Zweige zusammenführen, die für eine Weile getrennt wurden, und wollte wissen, welche Dateien geändert wurden.
Kam über diesen Link: http://linux.yyz.us/git-howto.html, was sehr nützlich war.
Die Tools zum Vergleichen von Zweigen, auf die ich gestoßen bin, sind:
git diff master..branch
git log master..branch
git shortlog master..branch
Ich habe mich gefragt, ob es so etwas wie "git status master..branch" gibt, um nur die Dateien zu sehen, die sich zwischen den beiden Zweigen unterscheiden.
Ohne ein neues Tool zu erstellen, ist dies meiner Meinung nach das Beste, was Sie jetzt tun können (was natürlich Wiederholungen anzeigt, wenn eine Datei mehr als einmal geändert wurde):
git diff master..branch | grep "^diff"
Ich habe mich gefragt, ob ich etwas verpasst habe ...
git
branch
git-branch
git-diff
johannix
quelle
quelle
Antworten:
So vergleichen Sie den aktuellen Zweig mit dem
master
Zweig:So vergleichen Sie zwei beliebige Zweige:
Lesen Sie weiter
git diff
in der offiziellen Dokumentation .quelle
git diff --name-status your_branch...master
gibt die Änderungen aus, die auf dem Master aufgetreten sind, seit your_branch daraus erstellt wurdeVersuchen
Auf diese Weise erhalten Sie weitere Informationen zu jeder Änderung, während Sie immer noch die gleiche Anzahl von Zeilen verwenden.
Sie können auch die Zweige umdrehen, um ein noch klareres Bild des Unterschieds zu erhalten, wenn Sie in die andere Richtung zusammenführen:
quelle
config --global color.ui true
), können Sie die --color überspringen. (Ich habe lks - Lazy Keyboard-Syndrom.)git config --global color.ui true
- vollständig sein.fatal: ambiguous argument 'master..branchName': unknown revision or path not in the working tree.
Denken Sie auch daran, dass Git eine billige und einfache Verzweigung hat. Wenn ich denke, dass eine Zusammenführung problematisch sein könnte, erstelle ich einen Zweig für die Zusammenführung. Wenn
master
also die Änderungen vorliegen, in die ich zusammenführen möchte, undba
mein Zweig den Code vom Master benötigt, kann ich Folgendes tun:Das Endergebnis ist, dass ich die Zusammenführung auf einem Wegwerfzweig ausprobieren muss, bevor ich mit meinem Zweig schraube. Wenn ich mich verheddere, kann ich einfach den
ba-merge
Zweig löschen und von vorne beginnen.quelle
master
während Sie an der Überprüfung des Codes und der Behebung von Konflikten arbeiten.Wenn jemand versucht, eine Diff-Datei aus zwei Zweigen zu generieren:
quelle
Es gibt auch eine GUI-basierte Methode.
Sie können gitk verwenden .
Lauf:
Klicken Sie mit der rechten Maustaste auf ein Commit eines Zweigs und wählen Sie im Popup-Menü die Option Dieses Commit markieren.
Dann gibt es eine Liste der geänderten Dateien im rechten unteren Bereich und Diff-Details im linken unteren Bereich.
quelle
Eine weitere Option, bei der in diesem Fall meld verwendet wird:
Dies ermöglicht nicht nur das Erkennen der Unterschiede zwischen Dateien, sondern bietet auch eine einfache Möglichkeit, auf eine bestimmte Datei zu zeigen und darauf zu klicken.
quelle
-d
Option?Beachten Sie, dass Git es einfach macht, die Zusammenführung auszuprobieren und Probleme zu vermeiden, wenn Ihnen das Ergebnis nicht gefällt. Es könnte einfacher sein, als im Voraus nach potenziellen Problemen zu suchen.
quelle
Und wenn Sie nur nach Änderungen für bestimmte Dateien suchen, dann:
Zweig1 ist optional und Ihr aktueller Zweig (der Zweig, in dem Sie sich befinden) wird standardmäßig berücksichtigt, wenn Zweig1 nicht angegeben ist. z.B:
quelle
Wenn Sie zusammenarbeiten oder an mehreren Funktionen gleichzeitig arbeiten, enthält der Upstream oder sogar Ihr Master häufig Arbeiten, die nicht in Ihrem Zweig enthalten sind und in grundlegenden Unterschieden fälschlicherweise angezeigt werden.
Wenn Ihr Upstream möglicherweise umgezogen ist, sollten Sie Folgendes tun:
Allein die Verwendung von git diff master kann relevante Änderungen einschließen oder nicht einschließen.
quelle
Wenn Sie IntelliJ IDEA verwenden , können Sie auch jeden Zweig mit Ihrem aktuellen Arbeitszweig vergleichen. Weitere Informationen finden Sie unter http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 . Dies ist auch in der kostenlosen Ausgabe verfügbar .
quelle
Es gibt zwei Zweige, sagen wir mal
In Zweig A können Sie tippen
dann erhalten Sie eine Ausgabe von
Der wichtige Punkt dabei ist
Text in Grün ist in Zweig A vorhanden
Text in Rot ist in Zweig B vorhanden
quelle
Hier gibt es viele Antworten, aber ich wollte etwas hinzufügen, das ich üblicherweise benutze. Wenn Sie sich in einem der Zweige befinden, die Sie vergleichen möchten, mache ich normalerweise einen der folgenden Schritte. Um dieser Antwort willen werden wir sagen, dass wir uns in unserem sekundären Zweig befinden. Je nachdem, welche Ansicht Sie gerade benötigen, hängt es davon ab, welche Sie auswählen. Meistens verwende ich jedoch die zweite der beiden Optionen. Die erste Option kann nützlich sein, wenn Sie versuchen, zu einer Originalkopie zurückzukehren - in beiden Fällen erledigen beide die Aufgabe!
Dadurch wird der Master mit dem Zweig verglichen, in dem wir uns befinden (der sekundär ist), und der ursprüngliche Code sind die hinzugefügten Zeilen, und der neue Code wird als entfernte Zeilen betrachtet
ODER
Dadurch wird auch der Master mit dem Zweig verglichen, in dem wir uns befinden (der sekundär ist), und der ursprüngliche Code sind die alten Zeilen und der neue Code sind die neuen Zeilen
quelle
Wenn Sie Github / Github Enterprise verwenden, können Sie die Web-Benutzeroberfläche verwenden, indem Sie auf die URL
/compare
Ihres Repository-Pfads klicken , z. B. https://github.com/http4s/http4s/compare . Sie können den Zweig / Commit / Tag auswählen, den Sie vergleichen möchten:Und der Unterschied wird auf die URL in der Github - Schnittstelle präsentiert werden ,
/compare/{x1}...{x2}
wo sindx2
undx1
sind der Zweig / commit / Tag , das Sie vergleichen möchten, zum Beispiel: https://github.com/http4s/http4s/compare/release-0.18.x ...MeisterSie können mehr im Github Doc sehen .
quelle
Für Leute, die nach einer GUI-Lösung suchen, hat Git Cola einen sehr schönen "Branch Diff Viewer" ( Diff -> Branches .. ).
quelle
Wenn
revision_n
undrevision_m
aufeinanderfolgende Commits sind, wird dieselbe Ausgabe wie ausgeführtgit show revision_m
quelle
Sie können auch ein visuelles Diff verwenden .
Wenn Sie beispielsweise Sourcetree verwenden , können Sie einfach zwei beliebige Commits in der Protokollansicht auswählen .
(Ich persönlich bevorzuge in den meisten Fällen die Verwendung einer GUI, und ich poste dies für diejenigen, die möglicherweise nicht mit den GUI-Optionen vertraut sind.)
quelle
Wenn Sie die grafische Benutzeroberfläche mögen und Windows verwenden, ist dies ein einfacher Weg.
quelle
Sie können auch Zweige für geänderte Dateien leicht vergleichen, indem Sie beispielsweise TortoiseGit verwenden . Klicken Sie einfach auf Referenzen durchsuchen und wählen Sie die Zweige aus, die Sie vergleichen möchten.
Wenn Sie beispielsweise Ihren Zweig mit dem Master vergleichen, erhalten Sie als Ergebnis eine Liste der Dateien, die im Master geändert werden, wenn Sie Ihren Zweig mit dem Master zusammenführen .
Denken Sie daran, dass Sie ein anderes Ergebnis erzielen, wenn Sie den Master mit Ihrem Zweig und Ihren Zweig mit dem Master vergleichen .
quelle