447 Stimmen

Umbenennen von Zweigen aus der Ferne in Git

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 ?

509voto

Sylvain Defresne Punkte 39987

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" .

325voto

sschuberth Punkte 25838

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.

191voto

Shashank Hegde Punkte 2413

Checken Sie zunächst in den Zweig aus, den Sie umbenennen möchten:

git branch -m old_branch new_branch
git push -u origin new_branch

So entfernen Sie einen alten Zweig aus remote :

git push origin :old_branch

10voto

Lily Ballard Punkte 175449

Sicher. Benennen Sie den Zweig einfach lokal um, pushen Sie den neuen Zweig und löschen Sie den alten.

Das einzige wirkliche Problem besteht darin, dass andere Benutzer des Repositorys die lokalen Verfolgungszweige nicht umbenennen können.

1voto

EpicPandaForce Punkte 75417

Ich weiß nicht, ob das richtig oder falsch ist, aber ich habe den "alten Namen" der Verzweigung auf den "neuen Namen" der Verzweigung verschoben und dann die alte Verzweigung mit den folgenden zwei Zeilen vollständig gelöscht:

git push origin old_branch:new_branch
git push origin :old_branch

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X