warum 'git diff' meldet keine Dateiänderung nach 'git add'

8

Warum denkt% git diff , dass es keine Änderungen gibt

.. auch wenn git status sie als geändert meldet?

%Vor%

aber um den Unterschied zu sehen, muss ich den letzten Reversion Hash explizit hinzufügen.

%Vor%     
eridal 30.09.2014, 17:43
quelle

4 Antworten

17

Bitte versuchen Sie git diff --staged -Befehl.

Weitere Optionen, die Sie verwenden können.

  

git diff

zeigt Änderungen zwischen Index- / Staging- und Arbeitsdateien. In Ihrem Fall hat git add den file-with-changes in den Staging-Bereich eingefügt. Daher kein Unterschied zwischen Staging- und Arbeitsdateien.

  

git diff --staged

zeigt Änderungen zwischen HEAD und Index / Staging. git diff --cached macht das gleiche auch. staged und cached können synonym verwendet werden.

  

git diff HEAD

zeigt Änderungen zwischen HEAD und Arbeitsdateien

  

git diff $commit $commit

zeigt Änderungen zwischen zwei Commits

  

git diff origin

zeigt Diff zwischen HEAD & amp; Fernbedienung / Ursprung

    
Bhaskar 30.09.2014, 17:50
quelle
5

git diff diffs gegen den Index, nicht gegen Ihre HEAD Revision. Wenn Sie git add ausführen, haben Sie die Änderungen in Ihren Index übernommen, also gibt es natürlich keine Unterschiede! Verwenden Sie

  • git diff HEAD , um die Unterschiede zwischen Ihrem Baumstatus und der HEAD Revision oder
  • zu sehen
  • git diff --cached , um die Unterschiede zwischen Ihrem Index und der HEAD Revision zu sehen.
Carl Norum 30.09.2014 17:47
quelle
0

Weil git diff standardmäßig die Unterschiede zwischen dem Staging-Bereich und Ihrer Arbeitskopie überprüft. Wenn Sie git add angeben, entspricht Ihr Staging-Bereich Ihrer Arbeitskopie und daher meldet diff keine Änderungen.

Durch das Hinzufügen des --cached -Flags wird diff an diff gegen HEAD gemeldet.

    
Dave Zych 30.09.2014 17:48
quelle
0

Ran in genau das gleiche Problem.

  • Fügen Sie die neue Datei hinzu, die Sie mit git add filename1.c
  • erstellt haben
  • Nehmen Sie eine andere Änderung an einem anderen Dateiname2.c vor, der bereits Teil des Repository-Verfolgungssystems war.
  • Führe einen git diff aus und du wirst nur die Änderung von filename2.c sehen. Änderungen an Dateiname1.c werden nicht angezeigt.
  • Wenn Sie jedoch einen Git-Status ausführen, sehen Sie die Änderungen sowohl in Dateiname1.c als auch in Dateiname2.c.
  • Machen Sie eine git-commit -a -m "Änderungen an filename1.c und filename2.c blah blah"
  • Mach einen git push

Sie werden sehen, dass filename1.c committed wurde.

    
Rishiaar 21.02.2018 18:26
quelle

Tags und Links