Was ist der Unterschied zwischen git diff und gif diff-index
Lesezeit: 2 Minuten
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?
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.
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.
11759500cookie-checkWas ist der Unterschied zwischen git diff und gif diff-indexyes