2014-02-09 7 views
5

Wenn ich will, um die Unterschiede zwischen <commit> und das Arbeitsverzeichnis (WD), ich laufeWie sagt man `git diff <commit>` zu diff untracked Dateien, die in `<commit>` `verfolgt wurden?

% git diff <commit> 

Diese in der Regel tut, was ich will, aber es sehen, ob die WD-Dateien enthält, die zu der Zeit verfolgt wurden, dass <commit> wurde erstellt, aber wird nicht verfolgt (oder im aktuellen Zweig), dann behandeln die resultierenden Diffs diese Dateien im WD, als wären sie /dev/null.

Ich kann Situationen vorstellen, in denen dies das geeignete Verhalten wäre, aber im Moment möchte ich in der Lage sein, die "echten" Unterschiede zwischen <commit> und dem aktuellen Verzeichnis zu sehen, mit der Liste der Dateien, die waren verfolgt zu dem Zeitpunkt, als <commit> erstellt wurde.

Gibt es eine Möglichkeit, git diff so zu verhalten?

EDIT: wenn es eine Möglichkeit gäbe bunkern (und später wiederherstellen) nur den Index, vielleicht läuft git reset <commit> vor git diff <commit> würde einen vollständigen Vergleich zwischen <commit> und dem WD produzieren, aber ich habe noch nicht herausgefunden, wie den Index selektiv wegzustauen (und später wieder herzustellen) ... Oh! Ich schätze, ich könnte einfach einen "armen Mannsversteck" machen: cp -a .git/index .git/index.bak!?

Antwort

2

können Sie verwenden

git diff --diff-filter=M 

zu zeigen, um nur die geänderten Dateien und nicht die gelöschten

+0

Danke, aber ich will nicht die (neu- "nicht") Dateien ignoriert werden; Ich möchte, dass sie mit 'git diff' verglichen werden mit ihren Gegenstücken in' '. – kjo

0

Wie wäre eine temporäre Dummy zu schaffen verpflichten, dass Sie den Status Ihrer aktuellen Arbeits Baum hält, und dass zu vergleichen ? Etwas wie

$ git checkout -b working-tree-state 
$ git add -f . 
$ git commit -m "The current working tree state" 
$ git diff <commit> 
Verwandte Themen