Git 儲存庫的上游可以設定為相同儲存庫的本機複製嗎?

Git 儲存庫的上游可以設定為相同儲存庫的本機複製嗎?

/home/user/reponame我在(Repo 1)中有一個儲存庫。然後我將此存儲庫克隆到/tmp/reponame(存儲庫 2)。是否可以將 Repo 1 的上游倉庫更改為 Repo 2?

我看到的其他問題建議分支,但它們不是我在這裡尋找的。當我這樣做時git checkout -b test --track /tmp/reponame/master,我收到錯誤/tmp/reponame/master is outside repository

答案1

Git 不使用術語「上游」來表示任何儲存庫範圍的設定。在 Git 術語中,只有單一分支才有上游,並且它只能設定為其他某個分支,因為它的目的是作為git merge <otherbranch>. (您的git checkout命令也完全圍繞使用分支而構建。)

相反,您可能正在尋找“遙控器”,它存儲存儲庫 URL。每個新克隆都將其來源 URL 儲存在名為 的遠端伺服器中origin。因此,如果您希望儲存庫 1 能夠推送到儲存庫 2,您可以使用git remote addor git remote set-url(取決於該名稱的遠端是否已存在):

git remote add origin /tmp/reponame
git fetch origin

或者:

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

接下來通常會更新每個分支的上游,以使git pull等工作:

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

相關內容