Basisvraag: hoe kan ik een git-repo loskoppelen van de oorsprong waaruit deze is gekloond?
git branch -a
toont:
* master
remotes/origin/HEAD -> origin/master
en ik wil alle kennis van oorsprong en de bijbehorende revisies verwijderen.
Langere vraag: ik wil een bestaande subversion-repo nemen en er een aantal kleinere git-repo’s van maken. Elk van de nieuwe git-repo’s zou de volledige geschiedenis van alleen de relevante branch moeten hebben. Ik kan de repo snoeien tot alleen de gewenste substructuur met:
git filter-branch --subdirectory-filter path/to/subtree HEAD
maar de resulterende repo bevat nog steeds alle revisies van de nu weggegooide substructuren onder de origin/master branch.
Ik realiseer me dat ik de vlag -T zou kunnen gebruiken om git-svn te gebruiken om in de eerste plaats de relevante substructuur van de subversion-repo te klonen. Ik weet niet zeker of dat efficiënter zou zijn dan het later uitvoeren van meerdere instantiaties van git filter-branch --subdirectory-filter
op kopieën van de git repo, maar ik zou in ieder geval nog steeds verbreek de link met de oorsprong.
Antwoord 1, autoriteit 100%
Behoorlijk eenvoudig:
git remote rm origin
Wat betreft de filter-branch
-vraag – voeg gewoon --prune-empty
toe aan uw filter branch-opdracht en het zal elke revisie verwijderen die niet echt bevat eventuele wijzigingen in uw resulterende repo:
git filter-branch --prune-empty --subdirectory-filter path/to/subtree HEAD
Antwoord 2, autoriteit 5%
Bestaande oorsprong verwijderen en nieuwe oorsprong toevoegen aan uw projectdirectory
>$ 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