`git pull --rebase`如何正确提取修改后的提交?

时间:2018-06-27 09:22:29

标签: git git-pull

我有一个设置,可以在我的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

我知道在上述情况下应用了最后一行,但是我不了解先决条件是什么或它是如何工作的?

一个解释将非常有帮助。 谢谢

1 个答案:

答案 0 :(得分:1)

这是因为合并和重新定基有所不同。

“常规” git pull首先获取更改,然后 将它们合并到本地状态,而git pull --rebase 获取更改,然后在顶部重新设置本地状态 的遥控器。

合并仅考虑项目的两个状态-“我们的” 和合并的“更广泛”方面,以及在可能的情况下, 它们的所谓“合并基础”-上一次常见提交 这些发展路线是共享的。

相反,重新设置基准首先会将“我们的”一面重置为 指向“他们”方面的提示相同的提交 然后应用每个“我们的”提交“他们的”没有 分别作为文本补丁()。

这可能会产生更大的冲突机会 因为本地更改被重新应用到遥控器的更新中 状态递增。