Frage Kann ein bestehender Git-Zweig einen entfernten Zweig verfolgen?


Ich weiß, wie man einen neuen Zweig erstellt, der entfernte Zweige verfolgt, aber Wie führe ich eine bestehende Zweigstelle zu einer entfernten Niederlassung?

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


3074
2018-02-06 15:14


Ursprung


Antworten:


Eine Filiale gegeben foo und eine Fernbedienung upstream:

Ab Git 1.8.0:

git branch -u upstream/foo

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

git branch -u upstream/foo foo

Oder, wenn Sie längere Befehle eingeben möchten, entsprechen diese den obigen beiden:

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

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

Ab Git 1.7.0:

git branch --set-upstream foo upstream/foo

Anmerkungen:

Alle obigen Befehle verursachen eine lokale Verzweigung foo Remote-Zweig zu verfolgen foo von entfernt upstream. Die alte (1.7.x) -Syntax ist zugunsten der neuen (1.8+) Syntax veraltet. Die neue Syntax soll intuitiver und leichter zu merken sein.


Siehe auch: Warum muss ich "--set-upstream" die ganze Zeit tun?


3745
2018-02-18 03:06



Sie können Folgendes tun (vorausgesetzt, Sie sind am Master ausgecheckt und möchten zu einem Remote-Branch-Master wechseln):

Richten Sie die "Fernbedienung" ein, wenn Sie sie noch nicht haben

git remote add origin ssh://...

Konfigurieren Sie nun den Master so, dass er Folgendes verfolgen kann:

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

Und push:

git push origin master

206
2018-03-09 08:50



Ich mache das als Nebeneffekt des Schiebens mit dem -u Option wie in

$ git push -u origin branch-name

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

Das git-branch Befehl versteht auch --set-upstream, aber seine Verwendung kann verwirrend sein. Version 1.8.0 Ändert die Schnittstelle.

git branch --set-upstream ist veraltet und kann in einer relativ entfernten Zukunft entfernt werden. git branch [-u|--set-upstream-to] wurde mit einer klareren Reihenfolge der Argumente eingeführt.

...

Es war verlockend zu sagen git branch --set-upstream origin/master, aber das weist Git an, den lokalen Zweig "Ursprung / Master" so anzuordnen, dass er in den aktuell ausgecheckten Zweig integriert wird, was sehr unwahrscheinlich ist, was der Benutzer meinte. Die Option ist veraltet. nutze das Neue --set-upstream-to (mit einem kurz-und-süß -u) stattdessen.

Angenommen, Sie haben einen Einheimischen foo verzweigen und wollen, dass es den Zweig mit dem gleichen Namen behandelt wie sein Upstream. Mach das mit

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

oder nur

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

130
2017-10-02 16:24



Du könntest das finden git_remote_branch Werkzeug nützlich. Es bietet einfache Befehle zum Erstellen, Veröffentlichen, Löschen, Verfolgen und Umbenennen von Remote-Zweigstellen. Ein nettes Feature ist, dass Sie fragen können grb Befehl, um zu erklären, welche git Befehle ausgeführt werden.

grb explain create my_branch github
# git_remote_branch version 0.3.0

# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch

51
2018-02-06 17:11



Eigentlich für die angenommene Antwort zu arbeiten:

git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR:
git branch --set-upstream qa upstream/qa

49
2017-11-23 12:08



Ich glaube, dass du schon in Git 1.5.x eine lokale Zweigstelle aufbauen kannst $BRANCH verfolgen Sie einen entfernten Zweig origin/$BRANCH, so was.

Angesichts dessen $BRANCH und origin/$BRANCH existieren, und Sie haben derzeit nicht ausgecheckt $BRANCH (wechseln Sie weg, wenn Sie haben), tun Sie:

git branch -f --track $BRANCH origin/$BRANCH

Dies wird neu erstellt $BRANCH als Tracking-Zweig. Das -f zwingt die Schöpfung trotz $BRANCH schon vorhanden. --track ist optional, wenn die üblichen Standardeinstellungen vorhanden sind (dh der Parameter git-config) branch.autosetupmerge ist wahr).

Beachten Sie, wenn origin/$BRANCH existiert noch nicht, Sie können es erstellen, indem Sie Ihren lokalen drücken $BRANCH in das Remote-Repository mit:

git push origin $BRANCH

Gefolgt von dem vorherigen Befehl, um den lokalen Zweig in einen Verfolgungszweig zu fördern.


40
2017-07-28 09:33



1- Aktualisieren Sie Ihre lokalen Metadaten mit: git fetch --all

enter image description here

2- Zeigen Sie Ihre entfernten und lokalen Niederlassungen mit: Git-Zweig -a , siehe folgenden Screenshot

enter image description here

3- Wechseln Sie zum Zielzweig, den Sie mit der Fernbedienung verknüpfen möchten: using

git checkout filename

Beispiel:

enter image description here 

4- Verknüpfen Sie Ihren lokalen Zweig mit einem Remote-Zweig mithilfe von:

git branch --set-upstream - zu nameOfRemoteBranch

NB: NameOfRemoteBranch : aus der Ausgabe von Schritt 2 kopieren "git branch -r"

Anwendungsbeispiel:

enter image description here


28
2018-06-06 14:21



Stellen Sie sicher, dass Sie Folgendes ausführen:

git config push.default tracking

in der Lage sein, störungsfrei zu pushen


22
2017-08-29 21:38



Bearbeitung .git/config ist wahrscheinlich der einfachste und schnellste Weg. Genau das tun die Git-Befehle für die Behandlung von entfernten Zweigen.

Wenn Sie nicht mit der Hand mit der Datei meckern wollen (und es ist nicht so schwer zu tun), können Sie immer verwenden git config um es zu tun ... aber nochmal, das wird nur das bearbeiten .git/config Datei sowieso.

Es gibt natürlich Möglichkeiten, einen entfernten Zweig bei der Verwendung automatisch zu verfolgen git checkout (indem man die --track Flag, zum Beispiel), aber diese Befehle arbeiten mit Neu Zweige, nicht bestehende.


21
2018-02-06 15:17



In sehr kurzer Zeit

git branch --set-upstream yourLocalBranchName origin/develop

Das wird deine machen yourLocalBranchName verfolgen Sie den entfernten Zweig genannt develop.


16
2017-10-09 07:19



Für 1.6.x kann es mit Hilfe der git_remote_branch Werkzeug:

grb track foo upstream

Das wird Git veranlassen zu machen foo Spur upstream/foo.


14
2018-06-01 02:23