Frage Zeigt an, welche Dateien zwischen zwei Revisionen geändert wurden


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

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

Die Tools zum Vergleichen von Branchen, die mir begegnet sind:

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

Ich frage mich, ob es etwas wie "git status master..branch" gibt, um nur die Dateien zu sehen, die sich zwischen den beiden Zweigen unterscheiden.

Ohne ein neues Werkzeug zu erstellen, denke ich, dass dies das nächste ist, was Sie jetzt tun können (was natürlich wiederholt wird, wenn eine Datei mehr als einmal geändert wurde):

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

Ich frage mich, ob ich etwas vermisse ...


1787
2018-05-05 00:47


Ursprung


Antworten:


Um den aktuellen Zweig zu vergleichen master

$ git diff --name-status master

Um irgendein Paar Zweige zu vergleichen

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

Das sollte tun, was du brauchst, wenn ich dich richtig verstehe.


2184
2018-05-05 01:04



Versuchen

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

Dadurch erhalten Sie mehr Informationen über jede Änderung, während Sie immer noch die gleiche Anzahl von Zeilen verwenden.

Sie können die Zweige auch spiegeln, um ein noch deutlicheres Bild des Unterschieds zu erhalten, wenn Sie den anderen Weg zusammenführen würden:

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

354
2018-02-09 19:38



Denken Sie auch daran, dass Git eine günstige und einfache Verzweigung hat. Wenn ich denke, dass eine Zusammenführung problematisch sein könnte, erstelle ich eine Verzweigung für die Zusammenführung. Also, wenn master hat die Änderungen, die ich einfügen möchte und ba Ist mein Zweig, der den Code vom Master benötigt, könnte ich Folgendes tun:

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 die Zusammenführung auf einem Wegwerfzweig ausprobieren muss, bevor ich mich mit meinem Zweig beschäftige. Wenn ich mich selbst verwickle, kann ich einfach die löschen ba-merge verzweigen und neu beginnen.


145
2017-10-11 01:22



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

git diff master..otherbranch > myDiffFile.diff

44
2018-04-03 14:01



Beachten Sie, dass git es einfach macht, die Zusammenführung einfach auszuprobieren und Probleme zu vermeiden, wenn Ihnen das Ergebnis nicht gefällt. Es könnte einfacher sein, als im Vorfeld nach möglichen Problemen zu suchen.


30
2018-05-05 00:59



Es gibt auch eine GUI-basierte Methode.

Sie können verwenden Scheiße.

  1. Lauf:

    $ gitk --all
    
  2. Klicken Sie mit der rechten Maustaste auf ein Commit eines Zweigs und wählen Sie Markieren Sie dieses Commit im Popup-Menü.

  3. Klicken Sie mit der rechten Maustaste auf ein Commit eines anderen Zweiges und wählen Sie Diff dieses -> markiert commit oder Diff markiert commit -> dies.

Dann wird es eine geänderte Dateiliste in der rechten unteren Verkleidung geben und Diff-Details in der linken unteren Verkleidung.


29
2018-06-14 06:01



Eine weitere Option, in diesem Fall meld verwenden:

git difftool -d master otherbranch

Auf diese Weise können Sie nicht nur die Unterschiede zwischen Dateien erkennen, sondern auch einfach auf eine bestimmte Datei zeigen und klicken.


26
2018-04-24 13:23



Bei der gemeinsamen Arbeit oder bei mehreren Funktionen gleichzeitig ist es üblich, dass der Upstream- oder sogar der Master-Prozess Arbeiten enthält, die nicht in Ihrem Zweig enthalten sind und in grundlegenden Diffs nicht korrekt angezeigt werden.

Wenn dein Upstream verschoben wurde, solltest du Folgendes tun:

git fetch
git diff origin/master...

Wenn Sie nur git diff master verwenden, können Sie relevante Änderungen einschließen oder nicht einschließen.


14
2018-03-24 03:21



Und wenn Sie nur nach bestimmten Dateien suchen, dann:

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

branch1 ist optional und Ihr aktueller Zweig (der Zweig, in dem Sie sich befinden) wird standardmäßig berücksichtigt, wenn branch1 nicht angegeben ist. z.B:

git diff master -- controller/index.js

10
2018-05-16 13:13