Was ist der Unterschied zwischen git diff und gif diff-index

Lesezeit: 2 Minuten

Benutzer-Avatar
myyuanyuan5200

Wenn ich Git-Diff-Dateien bekommen möchte, habe ich jemanden gefunden, der es verwendet

git diff-index --cached  --diff-filter=AM --name-only  HEAD

und wenn ich benutze

git diff --cached --diff-filter=AM --name-only  HEAD 

kann das gleiche Ergebnis erzielen. Was ist also der Unterschied zwischen git diff und git diff-index? Wann Sie verwenden müssen git diff-index aber nicht git diff?

Benutzer-Avatar
VonC

git diff-index ist ein Unterschied zum Index oder Arbeitsbaum:

Vergleicht Inhalt und Modus der in einem Baumobjekt gefundenen Blobs mit den entsprechenden nachverfolgten Dateien im Arbeitsbaum oder mit den entsprechenden Pfaden im Index

git diff ist vielseitiger und kann zwei Dateien oder zwei Commits oder (wie diff-index) einen Baum und den Index vergleichen.

In Ihrem Fall a diff HEAD HEAD würde ja gegen den Index differenzieren, der diff-index tut es auch.

  • Was ist der Index?

    – Werden

    15. April 2017 um 11:01 Uhr

  • @Will Im Index bereiten Sie Ihr nächstes Commit vor. Als Linux Torvalds 2005 Git erstellte, brauchte er ein Tool, mit dem er mehrere Änderungen hinzufügen und andere ignorieren konnte, um den nächsten Linux-Code-Commit vorzubereiten. Weitere Informationen: stackoverflow.com/a/4086986/6309

    – VonC

    15. April 2017 um 11:44 Uhr


  • git diff-index ist nicht immer gegen den index. Wie die Dokumentation sagt: “Vergleichen Sie einen Baum mit dem Arbeitsbaum oder Index”

    – Droopycom

    3. Mai 2018 um 4:33 Uhr

  • @Droopycom Einverstanden. Ich habe die Antwort entsprechend bearbeitet.

    – VonC

    3. Mai 2018 um 22:24 Uhr

diff-index ist eine Operation auf niedrigerer Ebene, die weniger tut, aber viel schneller ist, da sie nicht den Inhalt betrachtet, sondern nur Metadaten wie Zeitstempel prüft. Nur unter Linux können Sie dies mit etwas wie:

  strace -f -e file -o diff-index.log git diff-index HEAD
  wc diff-index.log
  less diff-index.log

Vergessen Sie diff-index, es sei denn, Sie haben ein Git-Performance-Problem zu lösen.

https://git-scm.com/docs/git-update-index#_using_assume_unchanged_bit

https://public-inbox.org/git/[email protected]/

Nachdem ich den Unterschied zwischen diesen beiden Befehlen untersucht habe, habe ich das Starange-Verhalten gefunden:

Sieht aus wie git diff-index ist sensibel, wenn sich die Datei geändert hat, der Inhalt jedoch nicht. während git diff ist in diesem Fall nicht empfindlich.

Mit anderen Worten, wenn Sie wissen möchten, ob eine Datei NICHT geändert wurde, es Ihnen aber egal ist, wann der Zeitstempel der letzten Änderung geändert wurde, verwenden Sie git diff.

  • Hinweis: Ich bin mir nicht sicher, ob ich hier richtig bin.

1175950cookie-checkWas ist der Unterschied zwischen git diff und gif diff-index

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy