Git fetch / merge不起作用

时间:2013-03-14 22:54:06

标签: git

我对代码做了一些更改。

  • git add -A
  • git commit -m“..”
  • git push origin master
  

! [拒绝]主人 - >主(非快进)错误:失败   推动一些参考'.....'为了防止你失去历史,   非快进更新被拒绝合并之前的远程更改   再推一次。请参阅'git中的'关于快进的注释'部分   推 - 帮'了解详情。

  • git fetch origin master
  

remote:计算对象:42,完成。 remote:压缩对象:100%   (26/26),完成了。 remote:总计26​​(delta 17),重用0(delta 0)   打开包装对象:100%(26/26),完成。来自...... *分支
  主人 - > FETCH_HEAD

  • git merge master
  

已经是最新的。

  • git merge origin / master
  

已经是最新的。

  • git merge origin / master master
  

已经是最新的。 Yeeah!

  • git push origin master
  

! [拒绝]主人 - >主(非快进)错误:失败   推动一些参考'....'为了防止你失去历史,   非快进更新被拒绝合并之前的远程更改   再推一次。请参阅'git中的'关于快进的注释'部分   推 - 帮'了解详情。

再次相同。

发生了什么事?使用git pull它可以工作,但我认为使用fetch / merge更好,所以请告诉我我做错了什么。

2 个答案:

答案 0 :(得分:4)

git pull会产生与git fetchgit merge完全相同的结果。

git fetch的工作方式有所不同,具体取决于您的称呼方式。 通常你只需拨打git fetch。这将从源更新所有远程分支。 之后您的自己的分支仍为master而远程分支为origin/master,因此如果您要将origin/master合并到master,则必须结帐master和{ {1}}。

git merge origin/master将获取该分支并将其存储到名为FETCH_HEAD的临时分支中。您可以使用git fetch origin master合并它。

但你可能只想做一个简单的git merge FETCH_HEAD。 ;)

提示:使用git pull查看所有本地和远程分支。

答案 1 :(得分:1)

你检查过哪个分支? git merge origin/master master未定位master:您始终合并到当前分支。