2009-05-20 6 views
2

Grundlegende Frage zur Funktionsweise von git.Dateien, die nicht im Remote-Repository angezeigt werden

Ich klonen ein Repo, einige Änderungen vornehmen, commit und drücken Sie die Änderungen zurück zum ursprünglichen Repo.

Wenn ich eine git log mache, erscheint die Commit-Nachricht, aber die eigentlichen Dateien sind nicht im Verzeichnis.

Sollten sie da sein?

+0

Die Antwort auf diese Frage finden Sie in http://git.or.cz/gitwiki/GitFaq (kurz gesagt: push aktualisiert das Arbeitsverzeichnis nicht, und Sie sollten sowieso nicht zu nicht-leeren Repositories wechseln) –

Antwort

3

Sie sollten ein wenig über den Unterschied zwischen einem bare Repository und einem Repository mit einer Arbeitskopie lesen. Bare-Repos bestehen aus dem .git-Verzeichnis (das möglicherweise ".git" heißt oder nicht), das nur die Repository-Datenbank ohne die Arbeitskopie ist. Solche Repos werden normalerweise verwendet, wenn Sie Ihre Änderungen für andere veröffentlichen möchten. Ich denke, die offizielle Empfehlung ist, nur zu leeren Repositories zu schieben.

Wenn Sie zu einem leeren Repository wechseln, werden Ihre Dateien in keiner Arbeitskopie angezeigt (außer natürlich in Ihrem eigenen Repo). Sie erscheinen jedoch im Repo, aber nur als Datenbankobjekte. Wenn Sie also versuchen, Ihre Dateien im leeren Repo zu finden, werden Sie nur eine Reihe von administrativen Dateien und Dateien finden, die nach sha1-Prüfsummen benannt sind.

+0

Diese nach dem sha-1 benannten Dateien sind die komprimierten Dateien, Bäume und Commits, die in Arbeitsverzeichnisdateien expandiert werden. – Abizern

3

sollten sie in .git sein (das eigentliche Repo). Der äußere Ordner ist kein Repo, es ist ein Arbeitsverzeichnis.

btw. Der Mann Seite sagt:

BESCHREIBUNG

Updates Remote-Refs lokalen Refs verwenden, während Objekte Senden notwendig, die gegeben Refs zu vervollständigen.

Sie können jedes Mal, wenn Sie in das Repository eindringen, interessante Dinge passieren lassen, indem Sie dort Haken setzen. Siehe Dokumentation für git-receive-pack (1).

+0

Wie sollte ich sie im Arbeitsverzeichnis erscheinen lassen? –

+0

Wenn es ein leeres Repo ist, tun Sie das nicht. Es gibt kein Arbeitsverzeichnis, in dem sie angezeigt werden könnten. Wenn Sie möchten, dass sie irgendwo in einem Arbeitsverzeichnis angezeigt werden, müssen Sie das leere Repo in ein reguläres Arbeitskopie-Repo klonen. – JesperE

0

Bearbeiten: Eigentlich sieht es so aus, als ob Sie Ihre post-update hooks ändern, ist der richtige Weg, dies zu tun.

Wenn Sie das wirklich tun müssen, können Sie:

git reset --hard 

oder

git stash 

Dies ist wahrscheinlich nicht der empfohlene Weg, aber die gewünschte Wirkung haben.

Verwandte Themen