231 Stimmen

Was enthält der Git-Index EXAKT?

Was enthält der Git-Index genau, und mit welchem Befehl kann ich den Inhalt des Indexes einsehen?


Vielen Dank für all Ihre Antworten. Ich weiß, dass der Index als Staging-Bereich fungiert, und dass das, was übertragen wird, im Index und nicht im Arbeitsbaum gespeichert wird. Ich bin nur neugierig, woraus ein Indexobjekt besteht. Ich vermute, es könnte eine Liste von Dateinamen/Verzeichnisnamen sein, SHA-1-Paare, vielleicht eine Art virtueller Baum?

Gibt es, in der Git-Terminologie, irgendwelche Klempnerarbeiten Befehl, mit dem ich den Inhalt des Indexes auflisten kann?

1voto

l h Punkte 31

Hier ist, was Sie genau brauchen, verwenden Sie diesen Befehl.

$ binwalk index

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
1717          0x6B5           Unix path: /company/user/user/delete.php
1813          0x715           Unix path: /company/user/user/get.php
1909          0x775           Unix path: /company/user/user/post.php
2005          0x7D5           Unix path: /company/user/user/put.php
3373          0xD2D           Unix path: /urban-airship/channel/channel/post.php
3789          0xECD           Unix path: /urban-airship/named-user/named-user/post.php
3901          0xF3D           Unix path: /user/categories/categories/delete.php
4005          0xFA5           Unix path: /user/categories/categories/get.php
4109          0x100D          Unix path: /user/categories/categories/put.php
4309          0x10D5          Unix path: /user/favorites/favorites/delete.php

0voto

grenix Punkte 523

Ich wollte nur sagen git ls-tree in den Ring.

Der Index ist eine der wichtigsten Datenstrukturen in Git.
Er repräsentiert einen virtuellen Arbeitsbaumzustand durch die Aufzeichnung einer Liste von Pfaden und deren Objektnamen und dient als Staging Area, um das nächste zu übertragende Baumobjekt zu schreiben.
Der Status ist "virtuell" in dem Sinne, dass er nicht unbedingt mit den Dateien im Arbeitsbaum übereinstimmen muss und dies oft auch nicht tut.

Wäre es zutreffend, zu sagen git ls-tree mir genau sagt, welche Arbeitsdateien/Objekte vorhanden sein sollten, wenn ich eine spezielle Übergabe ausgecheckt habe? Von welcher Art von Baum sprechen wir im Zusammenhang mit ls-tree?

Beispiele

git ls-tree -r -l HEAD
git ls-tree -r -l commit-hash

BTW: ls-tree funktioniert auch für Repositories, die ohne Checkout (-n) geklont wurden, wo ls-files nichts liefert.

https://stackoverflow.com/a/56242906/2623045

https://stackoverflow.com/a/67567058/2623045

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X