Modifier un nom de branche dans un référentiel Git

295

Comment renommer une branche existante dans un référentiel Git?

Je veux que la branche actuelle ait un nouveau nom.

Alex
la source
2
acceptez une réponse @Alex ou dites pourquoi vous ne voulez pas l'accepter.
Charlie Parker
1
@CharlieParker Cela a probablement quelque chose à voir avec le fait que c'était la seule question d'Alex, et il ne s'est probablement pas connecté depuis: "Vu pour la dernière fois le 3 février 11 à 21:29"
yellow-saint
13
@JB OMG dites-vous que quelque chose lui est peut-être arrivé ??? !!!!!!!!!
abbood
1
La réponse très votée à cette question pourrait-elle être acceptée?
Steve Chambers
Copie possible de Comment renommer une branche Git locale?
Vineet Jain

Réponses:

465

En supposant que vous êtes actuellement sur la branche que vous souhaitez renommer:

git branch -m newname

Ceci est documenté dans le manuel de git-branch, que vous pouvez consulter en utilisant

man git-branch

ou

git help branch

Plus précisément, la commande est

git branch (-m | -M) [<oldbranch>] <newbranch>

où les paramètres sont:

   <oldbranch>
       The name of an existing branch to rename.

   <newbranch>
       The new name for an existing branch. The same restrictions as for <branchname> apply.

<oldbranch> est facultatif, si vous souhaitez renommer la branche actuelle.

Richard Fearn
la source
10
Ou git branch -m other-branch renamed-other-branchsi vous ne l'êtes pas.
mipadi
32
De plus, si vous avez poussé l'ancienne branche vers une télécommande, vous pouvez la supprimer avec git push origin :branchname. Cela vous permettrait de pousser le nouveau et de supprimer l'ancien, en le renommant essentiellement sur la télécommande.
Jonathan
1
@mipadi, il crée la nouvelle branche et ne supprime pas la précédente.
Mohammad Arif
git branch (-m | -M) [<oldbranch>] <newbranch> N'a pas fonctionné pour moi, donnant l'erreur de syntaxe.
Mohammad Arif
Avec @MohammedArif -m, il renomme la vieille branche, il ne supprime la précédente.
Richard Fearn
177

Si vous êtes actuellement sur la branche que vous souhaitez renommer:

git branch -m new_name 

Ou sinon:

git branch -m old_name new_name 

Vous pouvez vérifier avec:

git branch -a

Comme vous pouvez le voir, seul le nom local a changé maintenant, pour changer le nom également dans la télécommande, vous devez faire:

git push origin :old_name

Cela supprime la branche, puis la télécharge avec le nouveau nom:

git push origin new_name

Source: https://web.archive.org/web/20150929104013/http://blog.changecong.com:80/2012/10/rename-a-remote-branch-on-github

javierdvalle
la source
13
Je pense que c'est la bonne réponse, la réponse très votée de Richard Feam ne couvre que le repo local, celui-ci couvre à distance.
user1145404
4
D'accord avec le commentaire ci-dessus, cette réponse était plus complète dans mon cas. De plus, lorsque j'ai poussé des validations supplémentaires vers la branche distante après avoir effectué toutes les étapes mentionnées dans cette réponse, git a essayé de pousser à old_namenouveau vers la branche. Heureusement, git a également fourni un correctif dans la ligne de commande: git-branch --unset-upstream. Après cela, tous les commits poussés sont allés à la new_namesuccursale distante.
Hans Roerdinkholder
2
méfiez-vous que de cette façon vous avez perdu la faculté de pousser git pushparce que vous êtes gentil avec un avertissement qui dit Your branch is based on 'old_name, but the upstream is gone.A le git push -u origin new_namerésoudre.
netalex