Git repo 的上游可以设置为同一个 repo 的本地克隆吗?

Git repo 的上游可以设置为同一个 repo 的本地克隆吗?

我在 (Repo 1) 中有一个 repo /home/user/reponame。然后我已将此 repo 克隆到/tmp/reponame(Repo 2)。是否可以将 Repo 1 的上游 repo 更改为 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 addgit 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

相关内容