Comment supprimer l'origine du référentiel git

280

Question de base: comment dissocier un dépôt git de l'origine à partir de laquelle il a été cloné?

git branch -a spectacles:

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

et je souhaite supprimer toute connaissance d'origine et les révisions associées.

Question plus longue: je veux prendre un dépôt subversion existant et en faire un plus petit dépôt git. Chacun des nouveaux git repos doit avoir l'historique complet de la branche concernée. Je peux tailler le dépôt uniquement sur le sous-arbre voulu en utilisant:

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

mais le dépôt résultant contient toujours toutes les révisions des sous-arborescences désormais supprimées sous la branche origine / maître.

Je me rends compte que je pourrais utiliser le drapeau -T pour git-svn pour cloner le sous-arbre pertinent du dépôt subversion en premier lieu. Je ne sais pas si cela serait plus efficace que d'exécuter plusieurs instanciations ultérieures git filter-branch --subdirectory-filtersur des copies du dépôt git mais, en tout cas, je voudrais toujours rompre le lien avec l'origine.

awy
la source

Réponses:

476

Assez simple:

git remote rm origin

En ce qui concerne la filter-branchquestion - ajoutez simplement --prune-emptyà votre commande de branche de filtre et cela supprimera toute révision qui ne contient pas réellement de modifications dans le référentiel résultant:

git filter-branch --prune-empty --subdirectory-filter path/to/subtree HEAD
ambre
la source
1
Merci. C'était le --prune-emptyqui me manquait.
awy
2
Hmm. obtenirerror: Could not remove config section 'remote.origin'
Dima Lituiev
5

Supprimer l'origine existante et ajouter une nouvelle origine à votre répertoire de projet

>$ 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
Mandeep Singh Gill
la source