Come rimuovere l'origine dal repository git


279

Domanda di base: come posso dissociare un repository git dall'origine da cui è stato clonato?

git branch -a Spettacoli:

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

e voglio rimuovere tutta la conoscenza dell'origine e le revisioni associate.

Domanda più lunga: voglio prendere un repository di sovversione esistente e ricavarne un numero di repository git più piccoli. Ciascuno dei nuovi repository git dovrebbe avere la cronologia completa del solo ramo pertinente. Posso eliminare il repository solo nella sottostruttura desiderata usando:

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

ma il repository risultante contiene ancora tutte le revisioni dei sottotitoli ora scartati nel ramo origine / master.

Mi rendo conto che potrei usare il flag -T per git-svn per clonare la sottostruttura rilevante del repository di sovversione in primo luogo. Non sono sicuro se ciò sarebbe più efficiente rispetto a quello successivo eseguendo più istanze di git filter-branch --subdirectory-filtercopie del repository git ma, in ogni caso, vorrei comunque interrompere il collegamento con l'origine.

Risposte:


476

Abbastanza semplice:

git remote rm origin

Per quanto riguarda la filter-branchdomanda, basta aggiungere --prune-emptyal comando branch del filtro e rimuoverà qualsiasi revisione che non contenga effettivamente alcuna modifica nel repository risultante:

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

1
Grazie. Era quello --prune-emptyche mi mancava.
terribile

2
Hmm. ottenendoerror: Could not remove config section 'remote.origin'
Dima Lituiev il

5

Rimuovere l'origine esistente e aggiungere nuova origine alla directory del progetto

>$ git remote show origin

>$ git remote rm origin

>$ git add .

>$ git commit -m "First commit"

>$ git remote add origin Copied_origin_url

>$ git remote show origin

>$ git push origin master
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.