本地没有任何修改,只是git pull时,显示git ahead of ‘origin/master‘ by * commits
目录TL;DR问题原因解决方案TL;DR本地没有更改,只是从远程pull,但是显示Your branch is ahead of ‘origin/master’ by 3 commits.原因是从远程更新了本地的master 分支,但是没有更新本地的追踪分支 origin/master, 解决方案是运行:git fetch让本地追踪分支(tracing branch)和远程同步太长不看版到此结束,
TL;DR
本地没有更改,只是从远程pull,但是显示Your branch is ahead of ‘origin/master’ by 3 commits.
原因是从远程更新了本地的master 分支,但是没有更新本地的追踪分支 origin/master, 解决方案是运行:
git fetch
让本地追踪分支(tracing branch)和远程同步
太长不看版到此结束,以下是具体原因和发现问题的经过。
问题
从服务器或者github clone下来之后,在本地还没有add commit等操作之前,发现remote有更新。
但是:
> git pull origin master
> Your branch is ahead of 'origin/master' by 3 commits.
原因
目前大家碰到的主要原因都是:本地有了修改添加提交等操作,所以理所应当的ahead远程分支。这个解决方案没啥好解决的,该push就push。
实际的问题在与我本地没有提交。
找了一些答案总不得要领,最后在这个链接找到了提示,虽然这个解题过程并不对,但是给了一个正确解决方案和重要的提示:
git fetch # 解决本次问题
git pull # 以后不要用 git pull origin master
方法应该是可行的,但是:
- git fetch 做了什么,git pull origin master 不是 fetch 加 merge吗?
- git pull 和 git pull origin master 有什么不同。
从这两个角度找答案,最终理清了整个事情。
相似问题参考
git pull 等的区别
'origin/master 并不是远程分支,而是追踪远程分支的一个本地分支。
当 git pull 的时候,会git fetch 更新 origin/master这个本地分支让它和服务器一致,另一方面会merge 本地的master分支。
但是git pull origin master的时候,只会更新本地的master 分支,而origin/master 这个老的tracing分支,他并没有被更新,也就会提示ahead了。
至于 git pull 和git pull origin master,git pull 没有指定分支,所以tracing branch也会从服务器拉下来。
解决方案
git fetch
更多推荐
所有评论(0)