web-dev-qa-db-fra.com

Comment renommer un nom de branche git distant

J'ai 4 branches comme maître -> origine/régacy, FeatureA -> origine/FeatureA.

Comme vous pouvez le voir ci-dessus, j'ai tapé un mauvais nom. 

Je souhaite donc renommer un nom de branche distante (Origin/Regacy => Origin/Legacy ou Origin/Master)

J'essaie de commander ci-dessous.

héritage de regacy regit à distance git

Mais la console git a retenu l'erreur msg pour moi.

erreur: impossible de renommer la section de configuration 'remote.regacy' en 'remote.legacy'

Comment puis-je résoudre ce problème?

196
JayD

 enter image description here


Vous ne pouvez pas renommer directement une branche distante.
Vous devez le supprimer, puis le repousser. 

Renommer une branche

# rename the local branch to the new name
git branch -m <old_name> <new_name> 

# delete the old branch on remote - where <remote> is eg. Origin
git Push <remote> --delete old_name

# Push the new branch to remote         
git Push <remote> new_name

# Reset the upstream branch for the new_name local branch
git Push <remote> -u new-name

 enter image description here


Note importante :

Lorsque vous utilisez le git branch -m (déplacer), git est également met à jour votre branche de suivi avec le nouveau nom.

git remote rename legacy legacy

git remote rename tente de mettre à jour votre section distante dans votre fichier de configuration. Il renommera la télécommande avec le nom donné en nouveau nom, mais dans votre cas, il n'en a trouvé aucun. Le changement de nom a donc échoué. 

Mais il ne fera pas ce que vous pensez, il renommera votre nom distant local config et not la branche distante.


Note Les serveurs Git peuvent vous permettre de renommer une branche git à l'aide de l'interface Web ou de programmes externes (tels que Sourctree, etc.), mais vous devez garder à l'esprit que tout le travail est effectué localement, il est donc recommandé de l'utiliser. les commandes ci-dessus au travail.

399
CodeWizard

Si vous avez mal nommé une branche ET que cela a été transféré dans le référentiel distant, procédez comme suit pour renommer cette branche ( en fonction de cet article ):

  1. Renommez votre branche locale:

    • Si vous êtes sur la branche que vous souhaitez renommer:
      git branch -m new-name

    • Si vous êtes sur une autre branche:
      git branch -m old-name new-name

  2. Supprimez la branche distante old-name et appuyez sur la branche locale new-name:
    git Push Origin :old-name new-name

  3. Réinitialise la branche en amont de la branche locale du nouveau nom:
    Basculez vers la branche puis:
    git Push Origin -u new-name

53
ZILONG PAN

Il semble qu'il existe un moyen direct:

Si vous voulez juste renommer les branches à distance (sans renommer les branches locales en même temps), vous pouvez le faire avec une seule commande comme

git Push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>

https://stackoverflow.com/a/21302474/2586761

Voir la réponse originale pour plus de détails

24
ptim

Cela peut être fait de la manière suivante_

At first rename local branch, then remote branch.

Renommer une branche locale:  

Si connecté dans une autre branche_

git branch -m old_branch new_branch 

Si connecté même branche_

git branch -m new_branch

Renommer une branche distante:

git Push Origin :old_branch    // delete remote branch

git Push --set-upstream Origin new_branch   // create new remote branch
4
Atequer Rahman

Cela peut être fait même sans renommer la branche locale en trois étapes simples,

  1. Accédez à votre référentiel dans GitHub
  2. Créez une nouvelle branche à partir de l'ancienne branche que vous souhaitez renommer
  3. Supprimer l'ancienne branche
0
Code_Mode

Il n'y a pas de méthode directe,

  1. Renommer une branche locale ,

    ma branche actuelle est master

    git branch -m master_renamed #master_renamed est le nouveau nom du maître

  2. Supprimer une branche distante,

    git Push Origin --delete master #Origin is remote_name

  3. Transférer une branche renommée en distante,

    git Push Origin master_renamed

c'est tout...

0

J'utilise ces alias git et cela fait presque tout le travail automatiquement:

git config --global alias.move '!git checkout master; git branch -m $1 $2; git status; git Push --delete Origin $1; git status; git Push -u Origin $2; git branch -a; exit;'

Utilisation: git move FROM_BRANCH TO_BRANCH

Cela fonctionne si vous avez les noms par défaut comme maître, origine, etc. Vous pouvez modifier à votre guise, mais cela vous en donne l’idée.

0
Tarik