461 votes

Comment supprimer l'origine d'un dépôt git ?

Question de base : Comment puis-je 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 de l'origine, et les révisions associées.

Question plus longue : Je veux prendre un dépôt subversion existant et créer un certain nombre de dépôts git plus petits à partir de celui-ci. Chacun des nouveaux dépôts git doit avoir l'historique complet de la branche concernée. Je peux élaguer le dépôt pour n'avoir que le sous-arbre voulu en utilisant :

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

mais le repo résultant contient toujours toutes les révisions des sous-arbres maintenant éliminés sous la branche origin/master.

Je réalise que je pourrais utiliser l'option -T de git-svn pour cloner le sous-arbre pertinent du dépôt de subversion en premier lieu. Je ne suis pas sûr que cela soit plus efficace que de lancer plus tard de multiples instanciations de git filter-branch --subdirectory-filter sur des copies du repo git mais, dans tous les cas, j'aimerais quand même rompre le lien avec l'origine.

811voto

Amber Points 159296

C'est assez simple :

git remote rm origin

Quant à la filter-branch question - il suffit d'ajouter --prune-empty à votre commande de filtrage de branche et il supprimera toute révision qui ne contient pas réellement de changements dans votre dépôt résultant :

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

2 votes

Hum error: Could not remove config section 'remote.origin'

79voto

Suppression de l'origine existante et ajout d'une nouvelle origine dans le répertoire de votre 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

1voto

Skybuck Flying Points 107

Dans mon cas, git branch -r continue d'afficher origin/master sur le dépôt local (après avoir renommé master sur le dépôt distant et local).

C'est réparé :

E:\SourceCode\PascalCoinGit\PascalCoin>git remote prune origin
Pruning origin
URL: https://github.com/SkybuckFlying/PascalCoin
 * [pruned] origin/master

E:\SourceCode\PascalCoinGit\PascalCoin>

Commandement :

git remote show origin

(Vu avant mais complètement oublié)

Résultat :

E:\SourceCode\PascalCoinGit\PascalCoin>git remote show origin
* remote origin
  Fetch URL: https://github.com/SkybuckFlying/PascalCoin
  Push  URL: https://github.com/SkybuckFlying/PascalCoin
  HEAD branch: PascalCoinMaster
  Remote branches:
    GUIExperimentalBugFixes1       tracked
    GUIExperimentalBugFixes2       tracked
    GUIExperimentalBugFixes3       tracked
    GUIExperimentalBugFixes4       tracked
    GUIExperimentalBugFixes5       tracked
    MergeTest                      tracked
    PIP-0026Windows7Implementation tracked
    PascalCoinMaster               tracked
    SkybuckMaster                  tracked
    TestPascalCoinMaster           tracked
    refs/remotes/origin/master     stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    GUIExperimentalBugFixes1       merges with remote GUIExperimentalBugFixes1
    GUIExperimentalBugFixes2       merges with remote GUIExperimentalBugFixes2
    GUIExperimentalBugFixes4       merges with remote GUIExperimentalBugFixes4
    GUIExperimentalBugFixes5       merges with remote GUIExperimentalBugFixes5
    MergeTest                      merges with remote MergeTest
    PIP-0026Windows7Implementation merges with remote PIP-0026Windows7Implementation
    SkybuckMaster                  merges with remote SkybuckMaster
  Local refs configured for 'git push':
    GUIExperimentalBugFixes1       pushes to GUIExperimentalBugFixes1       (up to date)
    GUIExperimentalBugFixes2       pushes to GUIExperimentalBugFixes2       (up to date)
    GUIExperimentalBugFixes3       pushes to GUIExperimentalBugFixes3       (up to date)
    GUIExperimentalBugFixes4       pushes to GUIExperimentalBugFixes4       (up to date)
    GUIExperimentalBugFixes5       pushes to GUIExperimentalBugFixes5       (up to date)
    MergeTest                      pushes to MergeTest                      (up to date)
    PIP-0026Windows7Implementation pushes to PIP-0026Windows7Implementation (fast-forwardable)
    PascalCoinMaster               pushes to PascalCoinMaster               (up to date)
    SkybuckMaster                  pushes to SkybuckMaster                  (up to date)
    TestPascalCoinMaster           pushes to TestPascalCoinMaster           (up to date)

E:\SourceCode\PascalCoinGit\PascalCoin>

Yup, git branch -r montre maintenant qu'il a disparu !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X