4079 Stimmen

Ändern Sie einen vorhandenen Git-Zweig so, dass er einem Remote-Zweig folgt?

Ich weiß, wie man einen neuen Branch erstellt, der Remote-Branches verfolgt, aber wie mache ich einen vorhandenen Branch zu einem Remote-Branch?

Ich weiß, ich kann einfach die .git/config Datei bearbeiten, aber es scheint, dass es einen einfacheren Weg geben sollte.

32 Stimmen

Wie unten angegeben, können Sie für einen vorhandenen Branch git push -u origin branch-name verwenden.

6 Stimmen

Wenn der lokale Branch der aktuelle Branch ist und der lokale Branch noch nicht einem Remote-Branch folgt, git pull gibt oft hilfreiche Nachrichten über den geeigneten Befehl zur Festlegung von Tracking-Informationen.

94 Stimmen

Es ist ärgerlich, wenn man Git lernt und einen Link zur Git-Dokumentation angezeigt bekommt. Diese Dokumentation scheint für Leute geschrieben zu sein, die bereits wissen, was sie mit Git machen.

4898voto

Dan Moulding Punkte 195982

Angenommen, es gibt einen Zweig foo und ein Remote upstream:

Ab Git 1.8.0:

git branch -u upstream/foo

Oder, wenn der lokale Zweig foo nicht der aktuelle Zweig ist:

git branch -u upstream/foo foo

Oder, wenn Sie lieber längere Befehle eingeben, sind diese äquivalent zu den beiden obigen:

git branch --set-upstream-to=upstream/foo

git branch --set-upstream-to=upstream/foo foo

Ab Git 1.7.0 (vor 1.8.0):

git branch --set-upstream foo upstream/foo

Hinweise:

  • Alle oben genannten Befehle führen dazu, dass der lokale Zweig foo den Remote-Zweig foo von upstream verfolgt.
  • Die alte (1.7.x) Syntax wurde zugunsten der neuen (1.8+) Syntax veraltet. Die neue Syntax soll intuitiver und leichter zu merken sein.
  • Das Definieren eines Upstream-Zweigs schlägt fehl, wenn dies gegen neu erstellte Remotes ausgeführt wird, die noch nicht abgerufen wurden. In diesem Fall führen Sie zuerst git fetch upstream aus.

Siehe auch: Warum muss ich jedes Mal `--set-upstream` machen?

277voto

Paul Hedderly Punkte 3615

Sie können das folgende tun (vorausgesetzt, Sie sind auf dem Master ausgecheckt und möchten in einem Remote-Zweig Master pushen):

Richten Sie das 'remote' ein, falls Sie es noch nicht haben

git remote add origin ssh://...

Konfigurieren Sie jetzt den Master, um das Tracking zu kennen:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

Und pushen:

git push origin master

217voto

Greg Bacon Punkte 127209

Ich mache dies als Nebeneffekt des Drückens mit der Option -u wie in

$ git push -u origin branch-name

Die äquivalente lange Option ist --set-upstream.

Der Befehl git-branch versteht auch --set-upstream, aber dessen Verwendung kann verwirrend sein. Version 1.8.0 modifiziert die Schnittstelle.

git branch --set-upstream ist veraltet und kann in naher Zukunft entfernt werden. git branch [-u|--set-upstream-to] wurde mit einer vernünftigeren Argumentreihenfolge eingeführt.

Es war verlockend zu sagen git branch --set-upstream origin/master, aber das sagt Git, den lokalen Zweig "origin/master" mit dem aktuell ausgecheckten Zweig zu integrieren, was höchstwahrscheinlich nicht das ist, was der Benutzer gemeint hat. Die Option ist veraltet; verwenden stattdessen die neue Option --set-upstream-to (mit einer kurzen und prägnanten -u).

Angenommen, Sie haben einen lokalen foo Zweig ausgecheckt und möchten, dass er einen Zweig mit dem gleichen Namen als Upstream verwendet. Lassen Sie dies mit folgendem Befehl geschehen

$ git branch --set-upstream-to=origin/foo

78voto

Hedgehog Punkte 5129

Für Git-Versionen 1.8.0 und höher:

Eigentlich damit die akzeptierte Antwort funktioniert:

git remote add upstream 
git fetch upstream
git branch -f --track qa upstream/qa
# ODER Git-Version 1.8.0 und höher:
git branch --set-upstream-to=upstream/qa
# Git-Versionen niedriger als 1.8.0
git branch --set-upstream qa upstream/qa

61voto

James Mead Punkte 3444

Du könntest das git_remote_branch Tool nützlich finden. Es bietet einfache Befehle zum Erstellen, Veröffentlichen, Löschen, Verfolgen und Umbenennen von Remote-Zweigen. Eine schöne Funktion ist, dass du mit einem grb Befehl nachfragen kannst, welche git Befehle es ausführen würde.

grb explain create my_branch github
# git_remote_branch version 0.3.0

# Liste der Operationen zum Erstellen eines neuen Remote-Zweigs und zum lokalen Verfolgen:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_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