Wenn es ein Repository gibt, über das ich nur git://
Zugriff habe (und normalerweise nur push+pull machen würde), gibt es eine Möglichkeit, Zweige in diesem Repository auf die gleiche Weise umzubenennen, wie ich es lokal mit git branch -m
?
Antworten
Zu viele Anzeigen?Sie müssen lediglich eine neue lokale Verzweigung mit dem gewünschten Namen erstellen, sie auf die entfernte Seite übertragen und dann die alte entfernte Verzweigung löschen:
$ git branch new-branch-name origin/old-branch-name
$ git push origin --set-upstream new-branch-name
$ git push origin :old-branch-name
Um den alten Zweignamen zu sehen, müsste dann jeder Client des Repositorys dies tun:
$ git fetch origin
$ git remote prune origin
HINWEIS: Wenn Ihr alter Zweig Ihr Hauptzweig ist, sollten Sie die Einstellungen des Hauptzweigs ändern. Andernfalls werden Sie beim Ausführen von $ git push origin :old-branch-name
erhalten Sie die Fehlermeldung "Löschung des aktuellen Zweigs verboten" .
Wenn Sie wirklich nur Zweige aus der Ferne umbenennen wollen, ohne gleichzeitige Umbenennung lokaler Zweigstellen können Sie dies mit einem einzigen Befehl tun:
git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>
Ich habe dieses Skript geschrieben ( git-rename-remote-branch ), die eine praktische Abkürzung bietet, um die oben genannten Schritte einfach durchzuführen.
Als eine Bash-Funktion:
git-rename-remote-branch(){
if [ $# -ne 3 ]; then
echo "Rationale : Rename a branch on the server without checking it out."
echo "Usage : ${FUNCNAME[0]} <remote> <old name> <new name>"
echo "Example : ${FUNCNAME[0]} origin master release"
return 1
fi
git push $1 $1/$2\:refs/heads/$3 :$2
}
Um den Kommentar von @ksrb zu integrieren : Im Grunde werden damit zwei Vorgänge in einem einzigen Befehl durchgeführt, nämlich erstens git push <remote> <remote>/<old_name>:refs/heads/<new_name>
einen neuen entfernten Zweig auf der Grundlage des alten entfernten Verfolgungszweigs zu verschieben und dann git push <remote> :<old_name>
um den alten entfernten Zweig zu löschen.
- See previous answers
- Weitere Antworten anzeigen