假设我的本地存储库是github上存储库后面的一个提交。
然后我在本地存储库提交一个提交
此时
A ------> commit 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的情况下不起作用?
答案 0 :(得分:5)
这不是关于工作与否,而是关于你要求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
的双参数版本很少是你想做的事情。
答案 1 :(得分:2)
而不是
git fetch origin master
git rebase origin/master
你应该做的
git pull --rebase
这将做正确的事。