2012-02-10 19 views
184

Domanda base: Come posso dissociare un repository git dall'origine da cui è stato clonato?Come rimuovere l'origine dal repository git

git branch -a spettacoli:

* master 
    remotes/origin/HEAD -> origin/master 

e voglio per rimuovere tutta la conoscenza di origine, e le revisioni associate.

Domanda più lunga: voglio prendere un repository di subversion esistente e creare un numero di piccoli repository git da esso. Ognuno dei nuovi repository git dovrebbe avere la cronologia completa del solo ramo pertinente. Posso potare il repo a poco la sottostruttura desiderato utilizzando:

git filter-branch --subdirectory-filter path/to/subtree HEAD 

ma il repo risultante contiene ancora tutte le revisioni delle sottostrutture ormai scartati sotto il ramo origin/master.

Mi rendo conto che potrei usare il flag -T per git-svn per clonare la sottostruttura pertinente del repository di subversion in primo luogo. Non sono sicuro che sarebbe più efficiente di eseguire più istanze di git filter-branch --subdirectory-filter su copie del repository git, ma, in ogni caso, mi piacerebbe comunque interrompere il collegamento con l'origine.

risposta

311

abbastanza semplice:

git remote rm origin 

Per quanto riguarda la domanda filter-branch - basta aggiungere --prune-empty al comando ramo filtro e rimuoverà qualsiasi revisione che in realtà non contiene cambiamenti nella vostra repo risultante :

git filter-branch --prune-empty --subdirectory-filter path/to/subtree HEAD 
+1

Grazie. Era il '--prune-empty' che mi mancava. – awy

+2

Hmm. ottenendo 'errore: impossibile rimuovere la sezione di configurazione 'remote.origin'' –

Problemi correlati