gpt4 book ai didi

git - 与 `git rebase` 冲突

转载 作者:太空狗 更新时间:2023-10-29 13:14:55 25 4
gpt4 key购买 nike

所以,昨天我发布了一个 question关于当我尝试将上游分支 rebase 到我的本地主题分支时出现的一些奇怪的冲突。

最后我使用了 git rebase --merge upstream 并解决了自上次 rebase 以来我没有接触过的文件中的很多冲突。

在这种情况下,我对 rebase 的理解是,它将我的提交与该主题分支分离,应用来自上游分支的提交,然后在这些分支之上应用(作为补丁)我的提交。所以,它最终成为一个快进操作。我不明白的是......为什么我会与来自上游的那些提交发生 merge 冲突。那些也作为补丁应用吗?我想这只是……将一些提交“焊接”到来自同一分支的先前提交之上的行为?

我问这个是因为我在我没有接触过的文件中有很多冲突。哦,我每天都会对这个上游分支进行 rebase。

更新

我刚刚注意到一些从上游带到我的主题分支的提交更改了它们的 SHA-1 id。有谁知道什么会导致 Git 这样做?会不会是 --merge 开关?

我的git版本是1.5.6.5

最佳答案

Rebase 重写历史。如果你 rebase 已经被推送到远程的提交,你将进入一个受伤的世界。如果你继续像这样 rebase ,那就更糟了。 Rebase 有时 有它的优势,但它是 IMO 的专业工具,而不是像 merge 这样的随意工具。

and then applies (as patches) my commits on top of those.

是的,作为新提交

So, it ends up being a fast-forward operation

没有。快进只是移动该分支的指针 HEAD。您正在从远程引入新对象,然后在其上应用补丁。

如果您的本地和远程最后一次在 A1 同步,并且假设您添加了(本地)A2A3 提交,并且发现远程添加了 B1B2,rebase 将存储 A2A3,下 pull B1 B2(应该是快进,因为它们共享一个共同的后代 A1),然后为 A2A3 作为新提交(因此新的 SHA-1)A2'A3'

所以现在你的本地历史是:A1 - B1 - B2 - A2' - A3'这不是快进。

关于git - 与 `git rebase` 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3465870/

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