Frage Git diff gegen einen Versteck


Wie kann ich sehen, dass die Änderungen im aktuellen Arbeitsbaum nicht gespeichert werden? Ich würde gerne wissen, welche Änderungen vor der Anwendung vorgenommen werden!


976
2017-10-06 16:48


Ursprung


Antworten:


Siehe das neueste Versteck:

git stash show -p

Sehen Sie ein beliebiges Versteck:

git stash show -p stash@{1}

Von dem git stash Hilfeseiten:

Standardmäßig zeigt der Befehl den diffstat an, akzeptiert jedoch alle   git diff bekanntes Format (z. B. git stash show -p stash @ {1} zum Anzeigen   das zweitletzte Versteck in Patch-Form).


1348
2017-10-06 16:50



Um den neuesten Stash zu sehen:

git stash show -p

Um ein beliebiges Versteck zu sehen:

git stash show -p stash@{1}

Außerdem benutze ich git diff, um den Stash mit jedem Zweig zu vergleichen.

Sie können verwenden:

git diff stash@{0} master

Um alle Änderungen im Vergleich zum Branch Master zu sehen.


Oder Sie können verwenden:

git diff --name-only stash@{0} master

Um einfach nur geänderte Dateinamen zu finden.


239
2017-07-26 14:33



Wenn sich die Verzweigung, auf der sich die Änderungen in der Zwischenzeit befinden, in der Zwischenzeit geändert hat, kann dieser Befehl hilfreich sein:

git diff stash@{0}^!

Dies vergleicht den Stash mit dem Commit, auf dem er basiert.


77
2018-03-27 13:23



Wenn dein Arbeitsbaum schmutzig istSie können es mit einem Vorrat vergleichen, indem Sie zuerst den schmutzig arbeitenden Baum begehen und dann mit dem Vorrat vergleichen. Anschließend können Sie das Commit mit dem Dirty-Working-Tree rückgängig machen (da Sie dieses Dirty-Commit möglicherweise nicht in Ihrem Commit-Protokoll haben möchten).

Sie können auch die folgende Vorgehensweise verwenden, um zwei Fächer miteinander zu vergleichen (in diesem Fall müssen Sie nur eines der Felder zuerst öffnen).

  • Verpflichte deinen schmutzigen Arbeitsbaum:

    git add .
    git commit -m "Dirty commit"
    
  • Vergleichen Sie den Stash mit diesem Commit:

    git diff HEAD stash@{0}
    
  • Danach können Sie das Commit rückgängig machen und es wieder in das Arbeitsverzeichnis einfügen:

    git reset --soft HEAD~1
    git reset .
    

Jetzt haben Sie den schmutzigen Arbeitsbaum mit Ihrem Versteck besiegt und sind wieder da, wo Sie ursprünglich waren.


30
2018-01-21 13:33



Das funktioniert bei mir in der Git Version 1.8.5.2:

git diff stash HEAD

16
2018-01-22 23:36



@ Magnes Antwort ist die einzige bis sehr (sehr späte) Zeit, die die flexibelste / nützlichste Interpretation der Frage beantwortet, aber sie ist ein bisschen komplizierter als nötig. Anstatt zu begehen und zurückzusetzen, speichern Sie einfach Ihre Arbeitskopie, vergleichen Sie und stürzen Sie dann.

git stash save "temp"
git diff stash@{0} stash@{1}
git stash pop

Das zeigt Ihnen die Unterschiede zwischen dem oberen Teil des Stash-Stapels und Ihrem Arbeitsordner, indem Sie Ihren Arbeitsordner temporär den oberen Teil des Stash-Stacks (stash @ {0}) ändern lassen, indem Sie das Original um 1 nach unten verschieben (stash @ {1}) Vergleichen Sie dann das ursprüngliche Top in der Position "new set", damit Sie die Änderungen sehen, die sich aus der Anwendung auf Ihre aktuelle Arbeit ergeben würden.

"Aber was, wenn ich keine aktuelle Arbeit habe?"  Dann bist du im normalen, langweiligen Fall. Benutze einfach Ambers Antwort

git stash show

oder @ czerasz Antwort

git diff stash@{0}

oder zugeben, dass das Verstecken und Entstapeln sowieso schnell und einfach ist, einfach die Veränderungen auflösen und inspizieren. Wenn du sie im Moment nicht willst, wirf sie weg (der aktuelle Index / Arbeitsordner ändert sich). In vollem Umfang

git stash apply
git diff
git reset
git checkout

13
2018-06-28 16:13



Wenn Sie Werkzeuge für diff haben (wie unvergleichbar)

git difftool stash HEAD

9
2017-09-09 08:08