Kann der Upstream eines Git-Repos auf einen lokalen Klon desselben Repos eingestellt werden?

Kann der Upstream eines Git-Repos auf einen lokalen Klon desselben Repos eingestellt werden?

Ich habe ein Repo in /home/user/reponame(Repo 1). Ich habe dieses Repo dann nach (Repo 2) geklont /tmp/reponame. Ist es möglich, das Upstream-Repo von Repo 1 in Repo 2 zu ändern?

Andere Fragen, die ich gesehen habe, schlagen Verzweigungen vor, aber das ist nicht das, was ich hier suche. Wenn ich das tue git checkout -b test --track /tmp/reponame/master, erhalte ich die Fehlermeldung /tmp/reponame/master is outside repository.

Antwort1

Git verwendet den Begriff „Upstreams“ nicht für repository-weite Einstellungen. In der Git-Terminologie haben nur einzelne Zweige einen Upstream, und dieser kann nur auf einen anderen Zweig eingestellt werden, da sein Zweck darin besteht, als Abkürzung/Standard für Befehle wie zu dienen git merge <otherbranch>. (Ihr git checkoutBefehl ist auch vollständig auf die Arbeit mit Zweigen ausgelegt.)

Stattdessen suchen Sie wahrscheinlich nach„Fernbedienungen“, die Repository-URLs speichern. Jeder neue Klon speichert seine Quell-URL in einem Remote mit dem Namen origin. Wenn Sie also möchten, dass Repo 1 in Repo 2 pushen kann, können Sie git remote addoder verwenden git remote set-url(je nachdem, ob bereits ein Remote mit diesem Namen existiert oder nicht):

git remote add origin /tmp/reponame
git fetch origin

Alternative:

git config remote.origin.url /tmp/reponame
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin

Anschließend erfolgt häufig eine Aktualisierung der Upstreams pro Zweig, damit git pullFolgendes funktioniert:

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

verwandte Informationen