2010-05-27 2 views
7

Mögliche Duplizieren:
How to convert a git repository from normal to bare ?Wie mache ich ein nicht-leeres Git-Repository zu einem nackten?

Ich möchte ein Repo in einen nackten Repo machen, damit die Menschen, um sie mit aus großen bösen Warnungen schieben. Ich könnte es löschen und wieder klonen ... aber vielleicht gibt es einen eleganteren Weg?

+0

sollte ich diese nackten Repositories oder spärlichen Repositories nennen? –

+0

git nennt sie "nackte" Repositories, wie in 'git clone --bare'. – Peter

+0

danke :) edit: s/sparse/bare/g –

Antwort

10

Es ist wahrscheinlich am besten, nur noch einmal zu löschen und zu klonen. Beispiel:

mv old_git_repo/ /tmp/ 
git clone --bare /tmp/old_git_repo/ new_git_repo/ 

Sie können auch entfernen Sie die Arbeitsdateien und fördern .git/*-.. Allerdings würde man auch bare = true hinzufügen müssen, und entfernen Sie logallrefupdates = true in der neuen nackten config ‚s [core] Abschnitt (früher .git/config Sie können ein Skript machen dies automatisch zu tun, wenn man so will

Edit:.. Sie erwähnt in ein Kommentar, dass dies von Svn geklont wurde, so ein neuer Klon wird eine lange Zeit dauern. Aber - nicht aus Svn klonen! Nur aus dem neuen Git Repo klonen, und es wird git -> git, die schnell sein wird. Oder, siehe Meine Anmerkung über das Verschieben der Dateien

+1

Ich zweitens die Empfehlung zu klonen (git-> git, nicht svn-> git, natürlich). Es ist immer am besten zu vermeiden, in '.git' herumzubasteln, wenn du kannst, auch wenn das eine ziemlich einfache Manipulation ist. – Cascabel

+0

Ich bekomme einen "Too many arguments" -Fehler, wenn ich 'git clone --are/pfad/zu/existing_repo/path/to/new_repo' starte. Ich habe es auch mit einem abschließenden '/ .git' beim ersten Argument versucht. –

1

Ein bare Repository ist einfach ein .git Verzeichnis ohne das Arbeitsverzeichnis.So können Sie einfach das Projekt Verzeichnis durch den Conte ersetzen nts.git und es sollte funktionieren:

mv /path/to/projectdir /path/to/projectdir.old 
mv /path/to/projectdir.old/.git /path/to/projectdir 
rm -rf /path/to/projectdir 
+1

Sie sollten auch die Konfigurationsoption 'core.bare' auf einen wahren Wert setzen. Aber es ist wahrscheinlich am besten, nur 'git clone --bare' zu ​​verwenden. –

+0

Sie haben Recht, ein Befehl "git config core.bare 1" wird ebenfalls benötigt. Danke für die Korrektur! – gyim

+3

Sollte nicht die dritte Zeile 'rm -rf/path/to/projectdir.old' lauten? Sie behalten das Arbeitsverzeichnis und werfen die Git-Datenbank weg. –

Verwandte Themen