11

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

$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 40 commits.

但是当我然后拉它说我是最新的:

$ git pull origin master
From https://github.com/dmcouncil/dmWorkflow
 * branch            master     -> FETCH_HEAD
Already up-to-date.

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

Michaels-MacBook-Pro-2:dmWorkflow durrantm$ git push origin master
Everything up-to-date

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

$ git status
# On branch mdd_play_settings_and_topics_reports
nothing to commit (working directory clean)

为什么我必须做额外的推动(似乎什么都没有)才能同步?
有没有更好的方法可以解决这个问题?

4

2 回答 2

6

这意味着您的有关 origin/master 的本地信息与远程版本不同。git fetch将纠正这一点。git pull适用于您的情况,因为它也执行git fetch.

于 2012-08-17T15:55:59.747 回答
3

只是添加到 Jamund Ferguson 的答案......

如果您配置了多个遥控器,您还可以执行一个git remote update获取所有遥控器的信息的操作。

与 git fetch 一样,这只会更新您拥有的有关遥控器状态的信息。它不会更新或合并任何代码,因此建议经常这样做以避免奇怪的状态报告和不正确的差异。

根据经验,当您使用在远程之后使用斜杠而不是空格的命令时,您将引用远程分支的本地信息,例如。git command origin/mastergit command origin master

用法示例:git checkout origin/master将根据您当前的本地信息切换到代码,git diff origin/master并将您当前的代码与您当前有关远程分支的本地信息进行比较。这意味着如果您不定期获取可能会导致麻烦的问题,您可以轻松地创建一个分支或使用远程的过时信息/代码来区分您的代码。

于 2012-08-17T16:44:16.947 回答