gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 03:05:22 26 4
gpt4 key购买 nike

我有一个设置,我在我的 local 机器上编写代码,然后将它从我的 dev 框中 pull 出来进行测试。假设我在 local 的分支 foo 上创建了一个提交 A,并在 dev box 上创建了一个分支 foo上游设置为 local/foo。如果我在 dev box 上从分支 foo 执行 git pulldev/foo 的分支树将与 local/foo.

但是如果我现在修改 local/foo 中的提交 Agit pull from branch foo on开发框给出了 merge 冲突。而 git pull --rebase 工作正常并且不会在 dev/foo 上重复提交 A 两次。

git help pull 说:

       -r, --rebase[=false|true|merges|preserve|interactive]
When true, rebase the current branch on top of the upstream branch after
fetching. If there is a remote-tracking branch corresponding to the upstream branch
and the upstream branch was rebased since last fetched, the rebase uses that
information to avoid rebasing non-local changes.

我知道在上述场景中应用了最后一行,但我不明白前提条件是什么或它是如何工作的?

解释会很有帮助。谢谢

最佳答案

这是因为 merge 和 rebase 的不同。

“常规” git pull 首先获取更改,然后将它们 merge 到本地状态,同时 git pull --rebase获取更改,然后在顶部重新设置本地状态 Remote 的。

merge 只考虑项目的两个状态——“我们的”和 merge 的“thiers”方面,加上,如果可能的话,他们所谓的“merge 基础”——最后的共同提交这些发展路线是共享的。

Rebase 则相反,首先将“我们的”这边重置为指向“他们的”一方在其尖端的相同提交然后应用每个“我们的”提交“他们的”没有单独地——作为文本补丁,一个接一个。

这可能有更大的机会不产生冲突因为本地更改被重新应用到远程的更新状态递增。

关于git - `git pull --rebase` 如何正确提取修改后的提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51059021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com