我看到一些我的git-fu无法解释的行为。
本地分支最后提交永远不会出现在它正在跟踪的远程分支上。在本地没有做任何事情并且正在做:
$ git diff branch-name origin / branch-name
空出来
git pull
也说我的分支已经是最新的。
似乎git pull已经产生了一个虚假提交(合并提交),但我无法弄清楚原因。 这一点非常重要,因为一旦git pull完成,我们需要我们的app服务器具有相同的提交哈希值。
我错过了什么明显的东西?任何可以帮助查明问题的额外信息是什么?
谢谢
答案 0 :(得分:3)
正在发生的事情是您正在使用git pull
隐含地执行git fetch && git merge origin/master
(假设您在主分支上)。空提交实际上不是空的。如果你有冲突,你将不得不解决它们,然后添加文件并提交。现在差异将显示您的冲突解决方案。如果合并没有冲突,例如,当你在gitk中查看时,diff会显示任何内容。
要避免这种情况,请显式执行git fetch
,然后将更改与远程分支合并或重新绑定(例如origin / master)。
你可以通过git pull --rebase
进行拉动。如果需要,您还可以通过更改配置使其成为拉取的默认行为。
希望这会有所帮助。