假设我的本地存储库是github上存储库后面的一个提交.
然后我在本地存储库中提交一个提交
此时
A ------>提交1 Github/master
A ------>提交2本地存储库/主服务器
我执行以下步骤将commit 2推送到github:
但是我遇到了以下错误:
如果我尝试用第1步替换git fetch origin它,它运行良好
然后我尝试了git fetch origin master:tmp,一个名为tmp的分支成功创建
所以,我的问题是
为什么git fetch origin master有时工作(在这种情况下git fetch origin master:tmp),而有时不工作在案例步骤1?
这不是关于工作与否,而是关于你在哪里询问git store它下载的内容.如果省略refpec中的目标,则要求git将其存储在FETCH_HEAD中.因此,git fetch origin master实际上git fetch origin master:FETCH_HEAD,你根本没有触摸origin/master或任何参考(正如你从输出中看到的那样master -> FETCH_HEAD).
当你运行时,git fetch origin master:tmp你要求它下载主分支(这是另一层,猜测你想要处理分支)并将其存储在一个名为的本地分支中tmp.您还会在输出中看到此映射.
如果要更新远程跟踪分支,只需调用即可git fetch origin.调用两个参数版本git-fetch很少是你想要做的事情.