我有一个设置,可以在我的local
机器上进行编码,然后将其从dev
框中拉出来进行测试。
假设我在A
的分支foo
上创建了一个提交local
,并在上游设置为foo
的dev框上创建了一个分支local/foo
。如果我在开发箱上的分支git pull
上执行了foo
,则dev/foo
的分支树将与local/foo
相同。
但是,如果我现在修改A
中的提交local/foo
,则开发箱上分支git pull
的{{1}}会产生合并冲突。 foo
可以正常工作,并且不会对git pull --rebase
两次重复提交A
。
dev/foo
说:
git help pull
我知道在上述情况下应用了最后一行,但是我不了解先决条件是什么或它是如何工作的?
一个解释将非常有帮助。 谢谢
答案 0 :(得分:1)
这是因为合并和重新定基有所不同。
“常规” git pull
首先获取更改,然后
将它们合并到本地状态,而git pull --rebase
获取更改,然后在顶部重新设置本地状态
的遥控器。
合并仅考虑项目的两个状态-“我们的” 和合并的“更广泛”方面,以及在可能的情况下, 它们的所谓“合并基础”-上一次常见提交 这些发展路线是共享的。
相反,重新设置基准首先会将“我们的”一面重置为 指向“他们”方面的提示相同的提交 然后应用每个“我们的”提交“他们的”没有 分别作为文本补丁()。
这可能会产生更大的冲突机会 因为本地更改被重新应用到遥控器的更新中 状态递增。