为什么当我看起来最新并且推拉(没有文件)修复它时,git说我提前40次提交?

Mic*_*ant 11 git branch github master

我切换到master,它说我提前40次提交:

$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 40 commits.
Run Code Online (Sandbox Code Playgroud)

但是,当我接受拉动时,它说我是最新的:

$ git pull origin master
From https://github.com/dmcouncil/dmWorkflow
 * branch            master     -> FETCH_HEAD
Already up-to-date.
Run Code Online (Sandbox Code Playgroud)

但是我可以解决这个问题(删除40 commitsmsg):

Michaels-MacBook-Pro-2:dmWorkflow durrantm$ git push origin master
Everything up-to-date
Run Code Online (Sandbox Code Playgroud)

现在' 40 commits'信息消失了:

$ git status
# On branch mdd_play_settings_and_topics_reports
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)

为什么我必须做额外的推动(似乎没什么)才能同步?
我能采取更好的方法吗?

Jam*_*son 6

这意味着您有关origin/master的本地信息与远程版本不同.git fetch会纠正这个.git pull适用于您的情况,因为它也可以git fetch.

  • 这个答案似乎与这个特定问题无关.本地主人*在原点/主人的前面*.因此,拉动什么都不做.我对这个问题的解读是,在拉动之后,'40提交前进'的信息仍然存在.并且该消息仅在推送后消失(如预期的那样). (3认同)