为什么git fetch origin master失败了?

时间:2013-12-31 13:54:51

标签: git github

假设我的本地存储库是github上存储库后面的一个提交。

然后我在本地存储库提交一个提交

此时

A ------> commit 1 Github / master

A ------>提交2本地存储库/主数据

我执行以下步骤将commit 2推送到github:

  1. git fetch origin master
  2. git rebase origin / master
  3. git push origin master
  4. 但是我收到了以下错误:

    enter image description here 如果我尝试将第1步替换为git fetch origin,则效果很好

    然后我尝试git fetch origin master:tmp,一个名为tmp的分支成功创建

    所以,我的问题是

    为什么git fetch origin master有时会起作用(在git fetch origin master:tmp的情况下),而有时在步骤1的情况下不起作用?

2 个答案:

答案 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

这将做正确的事。