2010-05-27 12 views
7

Eventuali duplicati:
How to convert a git repository from normal to bare ?Come si crea un repository git non nullo in uno nudo?

vorrei fare un pronti contro termine in un repo a nudo così la gente può spingere ad esso con fuori grandi avvertimenti brutto. Potrei cancellarlo e clonarlo di nuovo ... ma forse c'è un modo più elegante?

+0

dovrei chiamare questi repository nudi o repository sparsi? –

+0

git li chiama repository "nudi", come in 'git clone --bare'. – Peter

+0

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

risposta

10

Probabilmente è meglio eliminare e clonare nuovamente. Esempio:

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

Si potrebbe anche solo rimuovere i file di lavoro e promuovere .git/*-.. Tuttavia, si potrebbe anche bisogno di aggiungere e rimuovere bare = truelogallrefupdates = true nella nuova sezione [core] s' nudo config (ex .git/config Si potrebbe fare uno script per farlo automaticamente, se ti piace

Edit:.. Lei ha citato in un commento che è stato clonato da svn, quindi un nuovo clone impiegherà molto tempo, ma - non clonare da svn! Basta clonare dal nuovo repository git, e sarà git -> git, che sarà veloce. la mia nota sopra riguarda semplicemente lo spostamento dei file

+1

I secondo il consiglio di clonare (git-> git, non svn-> git, ovviamente). È sempre meglio evitare di andare in giro all'interno di ".git", se possibile, anche se si tratta di una semplice manipolazione. – Cascabel

+0

Viene visualizzato un errore "Troppi argomenti" quando eseguo 'git clone --bare/path/to/existing_repo/path/su/new_repo'. Ho anche provato con un '/ .git' finale sul primo argomento. –

1

Un repository nullo è semplicemente una directory .git senza la directory di lavoro, quindi puoi semplicemente sostituire la directory del progetto con il conte nts di .git e dovrebbe funzionare:

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

Si dovrebbe anche impostare l'opzione di configurazione 'core.bare' su un valore vero. Ma probabilmente è meglio usare semplicemente 'git clone --bare'. –

+0

Hai ragione, è anche necessario un comando "git config core.bare 1". Grazie per la correzione! – gyim

+3

La terza riga non dovrebbe essere 'rm -rf/path/to/projectdir.old'? Stai mantenendo la directory di lavoro e buttando via il database git. –

Problemi correlati