431 votes

Renommer des branches à distance dans Git

S'il y a un dépôt que j'ai seulement git:// (et je me contenterais généralement de pousser et de tirer), existe-t-il un moyen de renommer les branches dans ce dépôt de la même manière que je le ferais localement avec la fonction git branch -m ?

50 votes

La question "dupliquée" liée demande de renommer une branche "à la fois localement et à distance". Cette question, cependant, demande seulement comment renommer les branches à distance, ce qui permet une simplification. Voici ce que je fais pour renommer une branche sur le serveur sans avoir besoin de vérifier et / ou de créer une branche locale : git push origin origin/old_name:refs/heads/new_name && git push origin :old_name .

1 votes

@sschuberth : vous pouvez donner les deux commandes en une seule fois. Et cela devrait vraiment être la réponse à cette question.

2 votes

@JoachimBreitner Vous avez raison, j'ai déjà procédé à cette optimisation en ce script de la mienne.

1voto

arthur bryant Points 26

Je ne sais pas pourquoi mais la réponse de @Sylvain Defresne ne fonctionne pas pour moi.

git branch new-branch-name origin/old-branch-name
git push origin --set-upstream new-branch-name
git push origin :old-branch-name

Je dois désactiver l'amont et ensuite je peux réactiver le flux. Voici comment j'ai procédé.

git checkout -b new-branch-name
git branch --unset-upstream
git push origin new-branch-name -u
git branch origin :old-branch-name

0voto

Zhuinden Points 3074

Je ne sais pas si c'est bien ou mal, mais j'ai poussé l'"ancien nom" de la branche vers le "nouveau nom" de la branche, puis j'ai supprimé l'ancienne branche entièrement avec les deux lignes suivantes :

git push origin old_branch:new_branch
git push origin :old_branch

0 votes

Pour autant que je sache, c'est exactement ce que font toutes les autres réponses. Votre réponse est juste plus succincte.

0voto

Pober Wong Points 88

Vous pouvez créer une nouvelle branche basée sur la branche de l'ancien nom. Comme ceci, puis supprimer l'ancienne branche, terminé ! !! enter image description here

0 votes

C'est GitHub, pas Git. ;)

-4voto

myzzzl Points 13

En complément des réponses déjà données, voici une version qui vérifie d'abord si la nouvelle branche existe déjà (vous pouvez donc l'utiliser sans risque dans un script)

if git ls-remote --heads "$remote" \
    | cut -f2 \
    | sed 's:refs/heads/::' \
    | grep -q ^"$newname"$; then
    echo "Error: $newname already exists"
    exit 1
fi
git push "$oldname" "$remote/$oldname:refs/heads/$newname" ":$oldname"

(le chèque provient de cette réponse )

0 votes

J'aurais utilisé git show-ref --quiet --verify -- refs/heads/$new_name au lieu de ls-remote | cut | sed | grep .

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