2010-05-27 10 views
7

Powiel możliwe:
How to convert a git repository from normal to bare ?Jak sprawić, by repozytorium git nie było nagie?

Chciałbym zrobić repo do gołego repo więc ludzie mogą naciskać na niego z spośród dużych ostrzeżeń nieprzyjemnych. Mógłbym go usunąć i sklonować ponownie ... ale może jest bardziej elegancki sposób?

+0

czy powinienem je nazwać nagimi repozytoriami lub rzadkimi repozytoriami? –

+0

git nazywa je "nagimi" repozytoriami, tak jak w 'git clone --bare'. – Peter

+0

dzięki :) edit: s/sparse/bare/g –

Odpowiedz

10

Najlepiej jest po prostu usunąć i sklonować ponownie. Przykład:

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

Można też po prostu usunąć pliki robocze i promować .git/* do .. Jednak, to trzeba także dodać bare = true i usunąć logallrefupdates = true w nowym [core] sekcji gołe config „s (dawniej .git/config Można zrobić skrypt, aby to zrobić automatycznie, jeśli chcesz

Edycja:.. Wspomniałeś w komentarz, który został sklonowany z svn, więc nowy klon zajmie dużo czasu, ale - nie klonuj z svn! Po prostu sklonuj z nowego repozytorium git, a będzie to git -> git, które będzie szybkie. moja uwaga powyżej o przeniesieniu plików:

+1

Po drugie zalecam klonowanie (git-> git, nie svn-> git, oczywiście). Zawsze najlepiej unikać omijania wewnątrz '.git', jeśli możesz, nawet jeśli jest to całkiem prosta operacja. – Cascabel

+0

Po uruchomieniu 'git clone --bare/path/to/existing_repo/path/to/new_repo' pojawia się błąd" Zbyt wiele argumentów ". Próbowałem także z końcowym '/ .git' na pierwszym argumencie. –

1

Nagie repozytorium to po prostu katalog .git bez katalogu roboczego, więc możesz po prostu zamienić katalog projektu na conte nts .git i powinno działać:

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

Powinieneś także ustawić opcję konfiguracyjną 'core.bare' na wartość true. Ale najlepiej jest po prostu użyć 'git clone --bare'. –

+0

Masz rację, potrzebne jest także polecenie "git config core.bare 1". Dziękuję za poprawienie mnie! – gyim

+3

Czy trzecia linia nie powinna brzmieć "rm -rf/path/to/projectdir.old"? Zachowujesz katalog roboczy i wyrzucasz bazę danych git. –

Powiązane problemy