2015-05-04 11 views
5

Nehmen wir für einen Moment habe ich eine Datei in einem Repository namens LICENSE.txt vergleichen. Der Inhalt sieht wie folgt aus:Wie die Arbeitskopie, Staging Kopie und engagierte Kopie einer Datei mit Git

Copyright 2014 MyCompany. All Rights Reserved. 

Seit seiner 2015 ich das Jahr geändert, um seine 2015:

Copyright 2015 MyCompany. All Rights Reserved. 

Und dann die Datei inszeniert ein bisschen abgelenkt

git add LICENSE.txt 

zu sein, ich gemacht eine weitere Änderung an LICENSE.txt, um zu reflektieren, dass eine andere Organisation an dem Urheberrecht beteiligt ist.

Copyright 2015 MyCompany and Affiliates. All Rights Reserved. 
Copyright 2015 Other Company. All Rights Reserved. 

Ich bin in der Lage, den Unterschied zwischen meiner Arbeitskopie zu sehen und inszenierte Kopie von

git diff 

laufen Und ich bin in der Lage, den Unterschied zwischen der inszenierten Kopie und engagierter Kopie zu sehen von

laufen
git diff --cached 

Wie kann ich die engagierte Kopie (das eine ohne das Jahr ändern) mit Arbeitskopie (die mit dem zusätzlichen Copyright) vergleichen?

Dies ist lediglich ein Beispiel. Es gibt viel komplexere Fälle, in denen ich das, was ich inszeniert habe, mit den Änderungen vergleichen musste, die ich später an der Datei vorgenommen habe. Beim Vergleich des Inhalts der Arbeitskopie und der gestuften Kopie wird bestimmt, ob ich die gestufte Kopie ersetzen soll oder nicht.

Ich bin mit git 1.9.5 unter Windows Server 2012 R2.

+0

'git diff 'tut nicht, was Sie behaupten, siehe die akzeptierte Antwort. Können Sie Ihren Beitrag so bearbeiten, dass zukünftige Leser nicht falsch geführt werden? –

+0

Ich habe die Änderung vorgenommen.Die Verwirrung rührt von der Tatsache her, dass "git diff" den Unterschied zwischen der Arbeitskopie und der festgeschriebenen Kopie zeigt, wenn Sie keine Änderungen vorgenommen haben, aber Ihre Arbeitskopie geändert haben. – bloudraak

+0

Wenn Sie keine Änderungen vorgenommen haben, verhält sich 'git diff' genauso wie bei der Durchführung von Änderungen. Aber beide Diffs sind gleich. –

Antwort

14

Wie vergleiche ich die gestufte Kopie (die mit der Jahresänderung) mit Arbeitskopie.
[...] ich das Bedürfnis hatte zu vergleichen, was ich mit Änderungen inszeniert habe ich anschließend

in die Datei gemacht, dass noch git diff wäre.

(bearbeitet von OP. Wie vergleiche ich die begangen Kopie (die mit dem Jahreswechsel) mit Kopie arbeiten

Dann wäre es git diff HEAD sein)

http://images.abizern.org.s3.amazonaws.com/365git/Feb11/Git%20Diff%202.png

(365git: Getting a diff between the working tree and other commits)

Wenn Sie etwas anderes alssuchen 10 und diff --cached, dass lässt Sie mit:

git diff HEAD 

Das heißt: der Unterschied zwischen der Version bereits engagiert und der Arbeits Baum.

+0

Sie haben alle Szenarien, nach denen ich gesucht habe, auch mit einer sehr übersichtlichen Darstellung versehen. Danke, dass du dir die Zeit genommen hast. – bloudraak

+0

Es sollte beachtet werden, dass 'git diff', wenn Sie keine Änderungen vorgenommen haben, den Unterschied zwischen der festgeschriebenen Kopie und der Arbeitskopie zeigt. – bloudraak

+0

@blotraak true: HEAD und index wären vor dem ersten 'git add' identisch. – VonC

Verwandte Themen