[linux-l] Git-Verständnisfrage

Andreas Roehler andreas.roehler at online.de
Do Nov 5 11:34:58 CET 2009


olafBuddenhagen at gmx.net wrote:
> Hallo,
> 
> On Tue, Oct 06, 2009 at 06:52:46PM +0200, Andreas Roehler wrote:
> 
>> So ich das recht verstehe - bin nur git-Gelegenheitsnutzer - unterhält
>> Git ein Repo-im-Repo, den sogenannten Index.
>>
>> Wenn ich eine Datei lokal editiere, habe ich während der Zeit vor dem
>> Commit kein VC- bzw. muß es lokal extra z.B. unter RCS nehmen.
>>
>> Git scheint diese lokale Versionsverwaltung mitzubringen.
> 
> Du kannst natuerlich in Deinem Repository so viele lokale Commits haben
> wie Du moechtest (einer der groszen Vorteile einer verteilten
> Versionsverwaltung!); aber das hat nix mit dem Index zu tun...
> 
> Der Index speichert lediglich den letzten mit "git add" festgehaltenen
> Zustand. Wobei der Index selbst -- wie der Name eigentlich schon sagt
> :-) -- nur Verweise (d.h. sha1-Hashes) speichert; waehrend die
> eigentlichen Dateiobjekte direkt im Repository landen, genau wie Sachen
> die schon commited sind -- nur dass vor dem Commit der Index das
> *einzige* ist was auf diese Objekte verweist, wohingegen sie nach dem
> Commit permanente Verweise im Repository selbt (in Form von
> Commit-Objekten) bekommen, die dann auch bei einem "git clone"
> mitkopiert werden, im Gegensatz zu denen, die bisher nur durch den Index
> referenziert werden.
> 
> Der Index -- der ja nur Verweise enthaelt -- belegt dabei selbst
> praktisch keinen zusaetzlichen Speicherplatz; die Objekte, die der Index
> referenziert, und die noch nicht Bestandteil eines Commits sind,
> hingegen schon. Muesste allerdings schon ein sehr spezieller Fall sein,
> damit das einen wesentlichen Unterschied ausmacht. (Grosze Dateien mit
> "git add" dem Index hinzugefuegt, aber noch nicht commited.)
> 
> Habe ich es nun geschafft, Dich noch mehr zu verwirren?... ;-)
> 
> -Olaf-

Moin Olaf,

Dank für Deine Erläuterung.

Sehe allerdings in der Sache Repo-im-Repo, bzw. pseudo-RCS keinen Unterschied zwischen den Auffassungen.

Nach git add steht mit git head das erwähnte pseudo-RCS zur Verfügung, während
git diff den Änderungsstand vor add ausgibt.

Vor dem commit lassen sich damit einzelne Arbeitsschritte rückgängig machen -
was das Sinn des index sein dürfte.

Grüße

Andreas






Mehr Informationen über die Mailingliste linux-l