Question de base: Comment dissocier un repo git de l’origine à partir de laquelle il a été cloné?
git branch -a
montre:
* master
remotes/Origin/HEAD -> Origin/master
et je veux supprimer toute connaissance d'origine et les révisions associées.
Question plus longue: je veux prendre un repo Subversion existant et en faire un certain nombre de plus petits. Chacun des nouveaux repos git devrait avoir l'historique complet de la branche concernée. Je peux élaguer le référentiel au sous-arbre voulu en utilisant:
git filter-branch --subdirectory-filter path/to/subtree HEAD
mais le référentiel résultant contient toujours toutes les révisions des sous-arbres maintenant supprimés sous la branche Origin/master.
Je me rends compte que je pourrais utiliser le drapeau -T pour git-svn afin de cloner le sous-arbre pertinent du référentiel Subversion. Je ne sais pas si cela serait plus efficace que d'exécuter plus tard plusieurs instanciations de git filter-branch --subdirectory-filter
sur des copies du dépôt git, mais, dans tous les cas, j'aimerais quand même rompre le lien avec Origin.
Assez simple:
git remote rm Origin
En ce qui concerne la question filter-branch
- ajoutez simplement --Prune-empty
à votre commande de branche de filtrage pour supprimer toute révision ne contenant aucune modification dans le référentiel obtenu:
git filter-branch --Prune-empty --subdirectory-filter path/to/subtree HEAD