Renommer une branche Git : locale, distante et par défaut sur GitHub | We.Inc
Générez les commandes exactes pour renommer une branche git localement, pousser le nouveau nom, supprimer l'ancienne branche distante et corriger le suivi de l'upstream, ainsi que pour renommer main sur GitHub.
Pour renommer la branche sur laquelle vous êtes, lancez git branch -m new-name. Pour une autre branche, lancez git branch -m old-name new-name. Git ne peut pas renommer une branche sur un dépôt distant : poussez donc le nouveau nom avec git push -u origin new-name, puis supprimez l'ancien avec git push origin --delete old-name.
Les commandes de renommage selon la situation
Situation
Commande
Renommer la branche courante
git branch -m new-name
Renommer une autre branche
git branch -m old-name new-name
Écraser un nom existant
git branch -M old-name new-name
Publier le nouveau nom et le suivre
git push -u origin new-name
Retirer l'ancien nom du dépôt distant
git push origin --delete old-name
Réparer un clone après un renommage fait par quelqu'un d'autre
git branch -u origin/new-name new-name
Renommer en local ne demande qu'une commande ; c'est le dépôt distant qui bloque, car une branche distante ne peut pas être renommée sur place, seulement remplacée. Saisissez l'ancien et le nouveau nom ci-dessous pour obtenir les commandes adaptées à votre cas, y compris ce que vos coéquipiers doivent lancer ensuite et les étapes supplémentaires quand la branche est celle par défaut sur GitHub.
Saisissez l'ancien nom, le nouveau nom et le dépôt distant, généralement origin.
Indiquez si vous êtes sur cette branche et si elle existe déjà sur le dépôt distant.
Lancez les commandes dans l'ordre ; le générateur n'ajoute le push, la suppression et la correction de l'upstream que lorsqu'ils s'appliquent.
Envoyez le bloc destiné aux coéquipiers à toute autre personne disposant d'un clone.
Poussez le nouveau nom avant de supprimer l'ancien, pour qu'une pull request ouverte ou une exécution de CI ne voie jamais la branche disparaître complètement.
Sur GitHub, renommer depuis la page des branches est préférable pour les branches partagées : les pull requests ouvertes sont reciblées et les anciennes URL redirigées pour vous.
Cherchez l'ancien nom dans vos workflows de CI, vos réglages de déploiement et vos scripts. GitHub précise que les workflows Actions qui y font référence ne sont pas mis à jour.
git branch -m renomme aussi le reflog de la branche, son historique local de déplacements suit donc le nouveau nom.
Questions fréquentes
Puis-je renommer directement une branche distante ?
Pas avec git seul. Vous poussez la branche sous le nouveau nom et supprimez l'ancien. L'interface web de GitHub peut renommer une branche sur le serveur, ce qui préserve aussi les pull requests et les liens.
Quelle est la différence entre -m et -M ?
-m refuse si une branche portant le nouveau nom existe déjà. -M est le raccourci de --move --force et la remplace. Aucun des deux ne renommera une branche extraite dans un autre worktree du même dépôt.
Comment renommer master en main sur GitHub ?
Dans le dépôt sur GitHub, ouvrez Branches, choisissez renommer sur master, et tapez main. Renommer la branche par défaut nécessite un accès administrateur. Ensuite, chacun lance les quatre commandes qu'affiche GitHub : renommer en local, fetch, définir l'upstream, et mettre à jour le HEAD d'origin.
Pourquoi git push envoie-t-il toujours vers l'ancien nom de branche ?
La branche renommée suit encore l'ancien upstream. Poussez une fois avec -u, ou lancez git branch -u origin/new-name, et les push et pull suivants utiliseront le nouveau nom.
Ce que GitHub met à jour quand vous renommez chez lui
GitHub redirige les URL web contenant l'ancien nom, transfère la protection de branche vers le nouveau nom, et recible les pull requests ouvertes et les brouillons de release qui s'appuient dessus. Les URL de fichiers bruts ne sont pas redirigées.
Les utilisateurs avec droit d'écriture peuvent renommer les branches ordinaires ; renommer la branche par défaut ou une branche protégée nécessite des droits d'administrateur, et les rulesets d'une organisation peuvent restreindre encore davantage.
Éviter les noms qui posent problème plus tard
Tenez-vous-en aux lettres minuscules, aux chiffres, aux tirets et aux barres obliques pour regrouper, comme fix/login-timeout. Git rejette les noms contenant des espaces, deux points consécutifs, un point ou une barre oblique final, un tiret initial, ou l'un des caractères ~ ^ : ? * [ et la barre oblique inverse.
Renommage complet, du début à la fin
Renommer partout une branche déjà poussée
Renomme en local, publie le nouveau nom avec le suivi, puis supprime l'ancienne branche distante.
Ce que lancent les coéquipiers après un renommage sur GitHub
Ce sont les étapes qu'indique GitHub pour mettre à jour un clone existant, avec le nettoyage facultatif des branches distantes obsolètes.
Générateur de commandes de renommage
Nom actuel de la branche
Nouveau nom de la branche
Dépôt distant
Je suis actuellement sur cette branche
La branche existe sur le dépôt distant
Vos commandes
À lancer par les coéquipiers
Rien à signaler aux coéquipiers : la branche n'a jamais été poussée.
Ce n'est pas un nom de branche valide. Consultez les règles de nommage plus bas sur la page.