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.

8voto

tonderaimuchada Punkte 177

Für Git Version 2.25.1 verwenden Sie den Befehl:

git push --set-upstream origin

8voto

davidhcefx Punkte 69

Wenn Sie nach dem Ausführen von "Fehler: Der angeforderte Upstream-Zweig 'origin/foo' existiert nicht" erhalten haben:

git branch -u origin/foo

  1. Vergewissern Sie sich, dass origin einen foo Zweig hat.

  2. Stellen Sie sicher, dass die Variable remote.origin.fetch auf +refs/heads/*:refs/remotes/origin/* gesetzt ist:

    $ git config remote.origin.fetch '+refs/heads/:refs/remotes/origin/' $ git config --get remote.origin.fetch +refs/heads/:refs/remotes/origin/

  3. Führen Sie git fetch -v aus. Sie sollten sehen, wie git von origin/foo aktualisiert wird:

    $ git fetch -v From github.com:davidhcefx/test

    • [neuer Zweig] foo -> origin/foo = [aktuell] master -> origin/master
  4. Nach erfolgreichem Abschluss wird git branch -avv eckige Klammern anzeigen, die auf verfolgte Remote-Zweige hinweisen:

    $ git branch -u origin/foo Zweig 'foo' so eingestellt, dass 'origin/foo' verfolgt wird. $ git branch -avv

    • foo 92c5ada [origin/foo] Initial commit master 92c5ada [origin/master] Initial commit

7voto

Tom Mettam Punkte 2665

Dies ist keine direkte Antwort auf diese Frage, aber ich wollte hier eine Notiz für alle hinterlassen, die das gleiche Problem haben könnten wie ich, wenn sie versuchen, einen Upstream-Zweig zu konfigurieren.

Seien Sie vorsichtig mit push.default.

Bei älteren Git-Versionen war das Standardverhalten matching, was zu sehr unerwünschtem Verhalten führen würde, wenn Sie zum Beispiel haben:

Lokaler Zweig "master", der auf origin/master verfolgt

Remote-Zweig "upstream", der auf upstream/master verfolgt

Wenn Sie versuchen würden, "git push" auszuführen, wenn Sie sich im "upstream"-Zweig befinden, würde Git automatisch versuchen, den lokalen Zweig "master" in "upstream/master" zusammenzuführen, was eine Menge Chaos verursachen würde.

Dies führt zu einem vernünftigeren Verhalten:

git config --global push.default upstream

5voto

Ville Punkte 3790

Auf eine etwas verwandte Weise habe ich versucht, einem vorhandenen Zweig einen entfernten Tracking-Zweig hinzuzufügen, hatte jedoch keinen Zugriff auf dieses entfernte Repository auf dem System, auf dem ich diesen entfernten Tracking-Zweig hinzufügen wollte (weil ich häufig eine Kopie dieses Repos über Sneakernet auf ein anderes System exportiere, das den Zugriff auf den Push zu diesem entfernten hat). Ich fand heraus, dass es keinen Weg gibt, einen entfernten Zweig lokal hinzuzufügen, der noch nicht abgefragt wurde (damit der lokale Zweig nicht wusste, dass der Zweig auf dem entfernten existierte und ich den Fehler bekam: the requested upstream branch 'origin/remotebranchname' does not exist).

Am Ende gelang es mir, den neuen, zuvor unbekannten entfernten Zweig (ohne Abrufen) hinzuzufügen, indem ich eine neue Kopfdatei unter .git/refs/remotes/origin/remotebranchname hinzufügte und dann die Referenz (so schnell wie möglich geschätzt, so lahm es auch war ;-) vom System mit Zugriff auf das Origin-Repo auf die Workstation (mit dem lokalen Repo, auf dem ich den entfernten Zweig hinzufügen wollte) kopierte.

Nachdem das erledigt war, konnte ich dann git branch --set-upstream-to=origin/remotebranchname verwenden

4voto

z atef Punkte 6151

Oder ganz einfach durch :

wechseln Sie zum Zweig, wenn Sie noch nicht darin sind:

[za]$ git checkout branch_name

ausführen

[za]$ git branch --set-upstream origin branch_name
Branch origin auf Verfolgung des lokalen Branches brnach_name durch Rebase vorbereitet.

und du bist bereit zu :

 [za]$ git push origin branch_name

Sie können jederzeit einen Blick auf die Konfigurationsdatei werfen, um zu sehen, was was verfolgt, indem Sie ausführen:

 [za]$ git config -e

Es ist auch gut zu wissen, zeigt, welche Zweige verfolgt werden und welche nicht. :

  [za]$ git remote show origin

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