1034 Stimmen

Wie kann man die Verfolgung eines Zweiges ändern?

El central Repository musste auf einem neuen Server eingerichtet werden, also habe ich ein neues Remote-Repository auf meinem lokalen Repository erstellt und auf dieses gepusht.

Aber wenn ich es jetzt tue git pull heißt es, ich sei auf dem neuesten Stand. Das ist falsch - es sagt mir etwas über die antiguo entfernten Zweig, nicht den neuen, von dem ich mit Sicherheit weiß, dass er neue Commits enthält.

Wie ändere ich meinen lokalen Zweig so, dass er einem anderen entfernten Standort folgt?

Ich kann dies in der Git-Konfigurationsdatei sehen, aber ich möchte nicht alles durcheinander bringen.

[branch "master"]
    remote = oldserver
    merge = refs/heads/master

2 Stimmen

Ich habe Ihren Titel geändert - Sie versuchen tatsächlich, die Fernbedienung zu ändern, die Sie verfolgen, aber immer noch denselben Zweignamen darin zu verfolgen.

10 Stimmen

Es ist schwierig, dies als ein Duplikat von Wie bringt man einen bestehenden Git-Zweig dazu, einen entfernten Zweig zu verfolgen? . In dieser Frage wird nicht angegeben, dass der Zweig bereits einen entfernten Zweig verfolgt. Diese hier schon.

1647voto

urschrei Punkte 23153

Verwendung von git v1.8.0 oder später:

git branch branch_name --set-upstream-to your_new_remote/branch_name

Oder Sie können die -u Schalter

git branch branch_name -u your_new_remote/branch_name

Git verwenden v1.7.12 oder früher

git branch --set-upstream branch_name your_new_remote/branch_name

7 Stimmen

Ah, mein Fehler. Ich würde es immer noch über die Konfiguration tun, weil Sie sicher sein können, dass Sie nicht versehentlich den Namen der Verzweigung ändern, aber alles gut. +1.

0 Stimmen

Desde el 1.8.0 Versionshinweise : "Es war verlockend, "git branch --set-upstream origin/master" zu sagen, aber das weist Git an, den lokalen Zweig "origin/master" mit dem aktuell ausgecheckten Zweig zu integrieren, was höchstwahrscheinlich nicht die Absicht des Benutzers ist. Die Option ist veraltet; verwenden Sie stattdessen die neue Option "--set-upstream-to" (mit einem kurzen und knappen "-u")."

0 Stimmen

Wenn ich die git branch --set-upstream mybranch new-remote/mybranch erhalte ich eine neue lokale Zweigstelle namens new-remote/mybranch einrichten, um mybranch zu verfolgen.

141voto

Raoul Punkte 1670

Für mich war das die Lösung:

git remote set-url origin https://some_url/some_repo

Dann:

git push

3 Stimmen

Dies ist die Art und Weise, wie Github es vorschreibt. help.github.com/articles/changing-a-remote-s-url

32 Stimmen

Dies ändert tatsächlich, wo sich die Gegenstelle befindet, es ändert nicht, welche Gegenstelle Sie verfolgen (technisch gesehen) - Sie verfolgen immer noch den "Ursprung", es wird nur die Definition des Ursprungs aktualisiert. Für einige Anwendungsfälle könnte dies eine schlechte Sache sein. Nehmen wir an, Sie forken jQuery und erstellen eine neue Fernbedienung. Der "Ursprung" ist Ihr Fork, "Upstream" ist jQuery. Dann nehmen Sie an, dass Sie vorübergehend das ursprüngliche Projektarchiv anstelle Ihres Forks verfolgen müssen. Wenn Sie set-url und vergessen, sie zurückzustellen, dann wird die Zukunft git push Befehle würden fehlschlagen

110voto

Ko2r Punkte 1349

Mit einem zeitgemäßen git (2.5.5) der Befehl lautet wie folgt:

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

Dadurch wird der entfernte verfolgte Zweig für Ihren aktuellen lokalen Zweig aktualisiert

4 Stimmen

Hitting git branch --set-upstream-to=origin/develop hat den Fehler ausgelöst: error: the requested upstream branch 'origin/develop' does not exist . Zuvor habe ich einen entfernten Zweig in delelop umbenannt.

3 Stimmen

@belgoros git fetch --all vielleicht?

1 Stimmen

@belgoros, ich bin auf das gleiche Problem gestoßen. Ich habe es gelöst, indem ich git push --set-upstream origin stattdessen. Erst danach wurde mir klar, dass der Kommentar von @hakre zu der akzeptierten Antwort es bereits deutlicher erklärt hatte.

33voto

wranvaud Punkte 1033

Eine weitere Möglichkeit, um die Kontrolle über die Vorgänge zu behalten, ist die manuelle Bearbeitung der Konfigurationen:

git config --edit

oder die Kurzform

git config -e

Bearbeiten Sie dann die Datei nach Belieben, speichern Sie sie und Ihre Änderungen werden übernommen.

1 Stimmen

Das hat mir den Tag gerettet. Danke!

1 Stimmen

Mein Problem war, dass es zwei Ursprünge gab. (Ursprung und Ursprung-Algo). Aber der lokale Master verfolgte "origin-algo". Ich wollte aber, dass er "origin" verfolgt. Die einzige Möglichkeit, das zu ändern, war die Bearbeitung der Git-Konfiguration.

21voto

Cascabel Punkte 449595

Wenn Sie vernünftig sind, ist die Bearbeitung der Konfigurationsdatei sicher genug. Wenn Sie ein wenig paranoider sein wollen, können Sie den Befehl porcelain verwenden, um sie zu ändern:

git config branch.master.remote newserver

Wenn Sie sich die Konfiguration vorher und nachher ansehen, werden Sie natürlich feststellen, dass sie genau das getan hat, was Sie vorhatten.

Aber in Ihrem individuellen Fall würde ich Folgendes tun:

git remote rename origin old-origin
git remote rename new-origin origin

Das heißt, wenn der neue Server der kanonische Remote-Server sein soll, warum nennen Sie ihn dann nicht origin, als ob Sie ursprünglich von ihm geklont hätten?

3 Stimmen

Ich hatte das tatsächlich getan, bevor ich auf dieses Problem gestoßen bin - Git war schlau und hat die Umbenennung in die Konfigurationsdatei übernommen, so dass in deinem Beispiel in meiner Konfigurationsdatei "old-origin" stand.

0 Stimmen

Ich persönlich denke, dass dieser Weg konzeptionell sinnvoller ist als der akzeptierte Weg, aber ich schätze, dass sie funktional gleichwertig sind, richtig?

1 Stimmen

@Jefromi: A remote rename würde nicht das bewirken, worum man bittet, denn es ändert den Namen der Fernbedienung sowohl in [remote] Konfigs und in [branch] Konfigs. Was man in diesem Fall also tun muss, ist, die Konfigurationsdatei zu bearbeiten und das zu tun, was Sie sagen (Umbenennung der Fernbedienungen), und zwar an der Stelle [remote] Konfigurationszeilen.

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