2016-07-20 13 views
0

Ich habe gerade einen Git-Klon hier auf einen neuen Computer, und ich habe jetzt die repo in einem interessanten Zustand:löscht aus git Arbeitsverzeichnis

Es gibt keinen Zweig ausgecheckt. Das Arbeitsverzeichnis ist leer, aber der Repo befindet sich hier, komprimiert in den .git-Metadaten.

Natürlich hier der fehlende Schritt ist eine git checkout zu tun, um die Arbeitskopie auf einen Zweig zu erhalten, aber dieser Zustand hat mir denken. Dies ist ein ziemlich großer Repo, von dem ich nicht erwarte, dass er auch sehr häufig Zugriff benötigt, also frage ich mich jetzt, ob es einen Weg gibt, zu diesem "sauberen" Zustand zurückzukehren, in dem keine Zweige ausgecheckt werden, und die Dateien existieren nur als Metadaten?

Es wäre ein langer Weg spart bis einigen Speicherplatz gehen.

Ich dachte an all lokalen Dateien zu löschen, sobald ich fertig bin, aber das würde dann als nicht gebundene Umzüge auf diesem Zweig angezeigt. Ich würde gerne herausfinden, ob es eine Möglichkeit gibt, das Arbeitsverzeichnis einfach zu löschen, es von allen Zweigen im Repo zu trennen und nur die Metadaten im Repo-Verzeichnis zu belassen.

Eine mögliche Lösung könnte hier sein, einen Zweig zu erstellen, in dem alle Dateien gelöscht werden, aber das klingt nicht sehr elegant. Vielleicht existiert ein direkterer Ansatz?

Wie immer Vielen Dank im Voraus! Nun

Prost

+0

Mögliches Duplikat von [Wie lösche ich mein lokales Arbeitsverzeichnis in git?] (Http://stackoverflow.com/questions/673407/how-do-i-clear-my-local-working-directory-in- git) –

+0

Nicht ganz. Ich habe das gelesen und es scheint, als ob ich nicht verfolgte Dateien von der Arbeitskopie entfernen würde. Meine Frage hier war über das Löschen der gesamten Arbeitskopie und das Zurücklassen nur der Metadaten auf der Festplatte. – HarvesteR

Antwort

1

, ich glaube, ich habe meine eigene Antwort finden Sie hier. Es ist möglich!

Git hat das Konzept der ‚verwaisten‘ Zweige. Dies ist ein Zweig, der keine Beziehung zu anderen Commits in der Repo-Historie hat. Dies ermöglicht es uns, ‚Nein verpflichten‘ zu überprüfen, indem Sie:

git checkout --orphan none

und dann

git rm -rf .

die alle Dateien werden effektiv zu befreien, und weil der ‚kein‘ Zweig hat keine Vorfahren, die Löschungen erscheinen nicht als Entfernungen. Der Metadatenordner bleibt erhalten. Um zu einem gültigen Zweig zurückzukehren, führen Sie einfach einen weiteren Checkout durch.

Mehr Infos hier: https://coderwall.com/p/0n3soa/create-a-disconnected-git-branch

Gotta love git!

Prost

+1

Ja. Ein kürzerer/schnellerer, wenn auch komplizierterer Weg besteht darin, ein Commit zu machen, das den leeren Baum als sein "Baum" -Objekt hat, und dann einen Namen (Zweig- oder Markenname) zu machen, der auf dieses leere Festschreiben zeigt. Siehe http://stackoverflow.com/q/9765453/1256452 und schau dir 'git commit-tree' und' git update-ref' an. – torek

-1

Ich habe gerade einen Git-Klon hier auf einen neuen Computer, und ich habe jetzt die repo in einem interessanten Zustand: Es gibt keinen Zweig ausgecheckt ist. Das Arbeitsverzeichnis ist leer, aber der Repo befindet sich hier, komprimiert in den .git-Metadaten.

Standardmäßig wird git clone Master-Zweig für Sie auschecken. Wenn der Master-Zweig leer ist (normalerweise möchte ich einen aussagekräftigeren Verzweigungsnamen zum Starten erstellen, nicht den Standardzweig, d. H. master), wird keine Datei im Arbeitsverzeichnis angezeigt.

git checkout --orphan keine

und dann

git rm -rf.

Ich möchte Ihnen empfehlen, nicht so zu tun. git rm markiert Dateien als zu löschend. Es wird dein Arbeitsverzeichnis zerstören.

Verwandte Themen