我在git的例行一直很简单:
git add -A
git commit -m 'the changes I made'
git pull
# resolve conflicts
git push
然而,由于一些未知的原因,尽管有大量的冲突与起源,拉后,我没有得到任何冲突,没有我的允许其强制更新我的本地副本。 沿着这些线的东西: '2个文件改变,2个插入(+),6个缺失( - )'。 但在我的情况下,冲突不应该从简单的合并解决,应要求从我身边手动冲突解决。 为什么是混帐不让我做手工解决冲突? 提前致谢! 注意:没有我的Git命令有强制选项-f
git pull
而不论点是,以更多或更少的,等效git fetch && git merge origin/<upstream_branch>
通过使用pull
,而不是fetch
和merge
,你允许的git的合并尝试到当地分行。 如果发生与合并没有冲突,当地看起来“力更新”,因为它是能够解决你的文件的遥控器的版本和自己之间的差异,而无需干预。
调试正在发生的事情是有点硬,没有看到你的代码,但试试这个:
git fetch ;# fetch the remote changes
git diff HEAD origin/<branch> ;# diff your local branch with the remote's copy of <branch>
从输出git diff
应该线索你到发生了什么。 如果你想跟着它更进一步,尝试git merge --no-commit origin/<branch>
,然后发出git diff --cached
。 这会告诉你到底有什么变化git的自动合并,并且应该让你决定什么是什么。
如果git
设法解决在所有的冲突git pull
话反而会使得一个承诺。 这并不意味着它一定是得到了正确的事情。 正如你已经注意到了,这取决于改变你可能需要做一些手工修复起坐。
要做到这一点,改正你的工作树的后拉,然后将它们暂存(例如用git add -u
)和修改合并与提交git commit --amend
。
这将使新的合并提交它取代了Git有一个包括你的更正作出的一个。
然后,您可以把结果作为你通常做。