这到底是怎么发生的呢?
我在一个回购工作由自己的时刻,所以这是我的工作流程:
改变文件
提交
重复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)
虽然这个问题有点老了……我也遇到过类似的情况,我的回答帮助我解决了一个类似的问题
首先尝试使用push -f或force选项
如果这不起作用,就有可能(就像我的情况一样)远程存储库(或者是显示在git remote -v上的对远程存储库的引用)可能没有得到更新。
上面的结果是你的推送同步你的本地/分支与你的远程/分支,然而,在你的本地回购缓存仍然显示以前的提交(本地/分支…如果只有一次提交被推)作为HEAD。
要确认上述操作,在不同的位置克隆回购,并尝试比较本地/分支HEAD和远程/分支HEAD。如果两者都相同,那么你可能会遇到我遇到的问题。
解决方案:
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
$ git remote add origin git://github.com/pjhyett/hw.git
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
origin git://github.com/pjhyett/hw.git (fetch)
origin git://github.com/pjhyett/hw.git (push)
$ git remote rm origin
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
现在按如下方式执行push -f
git push -f github master ###注意你的命令不再有原点!
现在做个少不更事的拉
Git拉github master
在git状态接收
#在分支master上
没有要提交的内容(工作目录清洁)
我希望这对某些人有用,因为观看的数量是如此之高,以至于搜索这个错误几乎总是把这个线程列在顶部
有关详细信息,请参阅gitref