这到底是怎么发生的呢?
我在一个回购工作由自己的时刻,所以这是我的工作流程:
改变文件
提交
重复1-2次直到满意
推送至master
然后,当我执行git状态时,它告诉我我的分支领先X次提交(大概与我所做的提交数量相同)。是不是因为当您推送代码时,它实际上并没有更新本地缓存的文件(在.git文件夹中)?git拉似乎“修复”这个奇怪的消息,但我仍然好奇为什么会发生这种情况,也许我使用git错误?
包括在消息中打印的分支
我在当地的分公司走在主人前面
你在哪里推/拉当前的分支
我推送到GitHub,并拉到我碰巧在那个时间点上工作的任何一台计算机,我的本地副本总是完全最新的,因为我是唯一一个在它上工作的人。
它实际上并不检查远程回购
这就是我的想法,我想我要确保我对它的理解是正确的。
你是否给它传递了一些额外的参数?
不是我能看到的,也许我这边有什么奇怪的配置?
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
我浏览了本页上的每个解决方案,幸运的是@anatolii-pazhyn评论了,因为他的解决方案是有效的。不幸的是,我没有足够的声誉来支持他,但我建议先试试他的解决方案:
git reset --hard origin/master
这给了我:
HEAD is now at 900000b Comment from my last git commit here
我还建议:
git rev-list origin..HEAD
# to see if the local repository is ahead, push needed
git rev-list HEAD..origin
# to see if the local repository is behind, pull needed
你还可以使用:
git rev-list --count --left-right origin/master...HEAD
# if you have numbers for both, then the two repositories have diverged
祝你好运
实际上,当我使用TortiseGIT进行切换/签出时,就发生了这种情况。
我的问题是,我基于另一个本地分支创建了这个分支。它在/中创建了一个“合并”条目。Git /config看起来是这样的:
[branch "web"]
merge = refs/heads/develop
remote = gitserver
每当我切换到“web”分支时,它都会告诉我,我比开发提前了100多个提交。好吧,我不再致力于开发,这是真的。我可以简单地删除这个条目,它似乎像预期的那样运行。它正确地跟踪远程引用,而不是抱怨落后于开发分支。
正如Vikram所说,当搜索这个问题时,这个Stack Overflow线程是谷歌的顶部结果,所以我想分享我的情况和解决方案。