befehle - git änderungen einer datei anzeigen




Zeigt an, welche Dateien zwischen zwei Revisionen geändert wurden (10)

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 was sehr nützlich war.

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 ...


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.


Bei der Zusammenarbeit 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 die 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.


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.


Es gibt auch eine GUI-basierte Methode.

Du kannst gitk benutzen.

  1. Lauf:

    $ gitk --all
    
  2. Klicken Sie mit der rechten Maustaste auf ein Commit eines Zweiges und wählen Sie im Popup-Menü die Option Dieses Commit markieren aus.

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

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


Es gibt zwei Zweige sagen wir mal

  • A (Zweig, an dem du arbeitest)
  • B (Ein anderer Zweig, mit dem Sie vergleichen möchten)

In Filiale A können Sie tippen

git diff --color B

Dann erhalten Sie eine Ausgabe von

Der wichtige Punkt dabei ist

  1. Text in Grün ist innerhalb der Filiale A vorhanden

  2. Text in Rot ist in Zweig B vorhanden


Nur zusätzliche Informationen zu JasonSmiths Antwort :

Ich habe meinen Zweig mit diesem Befehl ausgecheckt:

$ git clone -b branchName http://repository_url

Der vorgeschlagene Befehl git diff schlug jedoch git diff :

$ git diff --name-status master..branchName
fatal: ambiguous argument 'master..branchName': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

Ich untersuchte Zweige, die diesem Thema folgen:

$ git branch
* branchName
$ git branch -a
* branchName
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/branchName

Ich hatte keinen Branch master lokal, also habe ich den Vergleich gegen remotes/origin/master :

$ git diff --name-status remotes/origin/master..push
. . .
. . .
. . .

Weitere Informationen zu remotes/origin/master in diesem Thread .


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

Vergleichen Sie den aktuellen Zweig mit dem 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.



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

git diff master..otherbranch > myDiffFile.diff




git-diff