我使用的是Git版本2.6.3,并在运行
时收到此消息git pull
“当前分支没有跟踪信息。”
我的印象是git默认为origin,而“simple”配置下的名称相同的分支。
遇到一些麻烦后,我发现最简单的配置方法是使用-u选项,如下所示:
$ git push -u origin master
然后会说:
“分支主数据设置为从原点跟踪远程分支主数据。”
所以我的问题是,为什么我们不能在git pull中使用-u选项?
$ git pull -u origin master
仅在使用push
时无法识别-u
选项
我的问题是 - 有充分的理由吗?
答案 0 :(得分:3)
您可以使用此命令设置当前分支的上游
$ git branch --set-upstream-to=origin/master
这样一来,在没有实际使用push
或pull
命令的情况下拉动和推动时,默认情况下将上游分支设置为主分支。
现在尝试git pull
,它应该从您的存储库开始收集所有内容,之后它会说它是Already up-to-date
如果您有任何其他问题,我将很乐意为您提供帮助。
答案 1 :(得分:2)
-u
只是使用--set-upstream
的快捷方式。此标志将使您的本地分支从远程上游跟踪远程分支。您只需要执行此操作一次,最好在开始时使用git push -u origin <branch_name>
。
这意味着当您使用git pull
,git fetch
和git push
时,它应该假设您的本地分支和正在跟踪的远程分支将同步。
如果您想了解更多信息,请访问:An Asymmetry Between Git Pull and Git Push
答案 2 :(得分:0)
-u
选项在拉动时无法识别,仅在推入时我的问题是-是否有充分的理由?
好吧...实际上,Git 2.24(2019年第四季度,四年后)将为-u
/ git pull
提供git fetch
!
官方原因:
“
git fetch
”了解了“--set-upstream
”选项以帮助那些 从他们打算推送到的私有分叉中克隆,并添加true 通过“git remote add
”上游,然后从“git fetch
”上游。
您可以按照the discussions here进行操作。
请参见commit 24bc1a1的Corentin BOMPARD (``)(2019年8月19日)。
(由Junio C Hamano -- gitster
--在commit 9437394中合并,2019年9月9日)
pull
,fetch
:添加--set-upstream
选项在
--set-upstream
/git pull
中添加fetch
选项,使用户可以为当前分支设置上游配置(branch.<current-branch-name>.merge
和branch.<current-branch-name>.remote
)。 / p>一个典型的用例是:
git clone http://example.com/my-public-fork git remote add main http://example.com/project-main-repo git pull --set-upstream main master
或者,而不是最后一行:
git fetch --set-upstream main master git merge # or git rebase
这大部分等效于克隆project-main-repo(设置upsteam),然后“ git remote add” my-public-fork,但是对于使用允许从Web UI进行分叉的托管系统的人们来说,这可能会更自然
此功能类似于“
git push --set-upstream
”。
注意:最后一个功能引入了一种类型,该类型已由Git 2.25(2020年第一季度)修复。
请参见commit 391c7e4的Ralf Thielow (ralfth
)(2019年10月31日)。
(由Junio C Hamano -- gitster
--在commit 7ab2088中合并,2019年12月1日)
fetch.c
:修复警告消息中的错字签名人:拉尔夫·蒂洛
评论人:乔纳森·尼德
所以不是:
multiple branch detected, incompatible with --set-upstream
但是:
multiple branches detected, incompatible with --set-upstream