git tag Wie man zwischen lokalen nicht festgeschriebenen Änderungen und Ursprung unterscheidet




title tag definition (4)

Ich weiß, dass es keine Antwort auf die genaue Frage ist, aber ich fand diese Frage, um eine Datei in einer Verzweigung und einer lokalen nicht festgeschriebenen Datei zu unterscheiden, und ich dachte, ich würde teilen

Syntax:

git diff <commit-ish>:./ -- <path>

Beispiele:

git diff origin/master:./ -- README.md
git diff HEAD^:./ -- README.md
git diff [email protected]{0}:./ -- README.md
git diff 1A2B3C4D:./ -- README.md

(Danke Eric Boehs für eine Möglichkeit, den Dateinamen nicht zweimal eingeben zu müssen)

Angenommen, ich habe ein Repository geklont und Dateien geändert. Ich weiß, dass, wenn ich lokale nicht git diff test.txt Änderungen habe, ich ein diff wie folgt tun kann git diff test.txt und es wird mir den Unterschied zwischen dem aktuellen lokalen HEAD und den modifizierten, nicht festgeschriebenen Änderungen in der Datei zeigen. Wenn ich diese Änderungen festlege, kann ich sie gegen das Original-Repository unter Verwendung von git diff master origin/master

Aber gibt es eine Möglichkeit, die lokalen Änderungen mit dem ursprünglichen Repository auf dem Server zu unterscheiden, bevor Sie lokal committen? Ich probierte verschiedene Permutationen von git diff --cached master origin/master ohne Glück.


Da das Remote-Repository über git fetch , sollte es möglich sein, diese Commits zu vergleichen. Versuche Folgendes:

$ git fetch origin
$ git diff origin/master

Um nicht-gestufte (nicht hinzugefügte) Änderungen an vorhandenen Dateien anzuzeigen

git diff

Beachten Sie, dass dies keine neuen Dateien verfolgt. Um gestaffelte, nicht verpflichtende Änderungen zu sehen

git diff --cached


Wenn Sie Dateien visuell vergleichen möchten, können Sie Folgendes verwenden:

git difftool

Es startet automatisch Ihre Diff-App für jede geänderte Datei.

PS: Wenn Sie keine Diff-App gesetzt haben, können Sie es wie im folgenden Beispiel tun (ich benutze Winmerge ):

git config --global merge.tool winmerge
git config --replace --global mergetool.winmerge.cmd "\"C:\Program Files (x86)\WinMerge\WinMergeU.exe\" -e -u -dl \"Base\" -dr \"Mine\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\""
git config --global mergetool.prompt false




git-diff