# conventionally it's named 'upstream', but it coincides with git terminology
# so for clarity's sake, I'll name it 'source' in this example
git remote rename origin source
git remote add origin <my-fork>
# errors here:
# fatal: the requested upstream branch 'origin' does not exist
git branch --set-upstream-to origin/master
4条答案
按热度按时间q8l4jmvw1#
origin
是一个remote的名字,它是另一个repo知道的repo。你在添加repo时命名为git remote add somename other/repo/path
,然后你可以从它们命名为fetch
和pull
,如果它们是裸repo,可以命名为push
。当你克隆一个repo时,git会为你设置一个remote,指向你克隆的repo,并默认将其命名为origin
。origin/develop
指的是origin
远程存储库中的develop
分支。如果你已经在本地创建了一个分支,你可以把它推送到一个特定的远程节点上,在那里创建它,但是在你创建之前,你不能把它设置为上游,在你的例子中,你可以做
git push origin develop
,然后你可以把它设置为上游,但是你可以把这个操作压缩到-u
的推操作中,所以git push -u origin develop
,这会将你的分支推送到origin
,并设置本地分支来跟踪它。注意push -u
是在git 1.7.0中添加的。iqjalb3h2#
首先确定你在
develop
分支,然后使用git branch --set-upstream-to origin/develop
oknrviil3#
Git定义了
git branch --set-upstream-to <upstream> [<branchname>]
。这里
<upstream>
指定远程分支,[<branchname>]
是本地分支名称,如果未指定分支,则默认为当前分支。因此,它应该是
git branch --set-upstream-to origin/develop develop
-u
可与--set-upstream-to
互换vybvopom4#
TL;DR
您可能需要先运行
git fetch <upstream>
,然后再运行git branch --set-upstream-to <upstream>
。今天我在Github上做一个公共repo的时候遇到了类似的问题。我克隆了这个公共repo,在本地做了一些修改,然后意识到我忘了先在GitHub上分叉这个repo。所以我现在就去分叉了,但是我不能设置本地分支来跟踪我的分叉:
基本上发生的事情是你的本地repo不知道
origin
中的分支,实际上git提示你可能希望先运行git fetch
,但是一个简单的git fetch
不会这样做,因为它会自动从当前默认的remote中获取,仍然是source
。所以你首先需要做的是:
或
那么您的
git branch --set-upstream-to ...
应该可以正常工作。