gpt4 book ai didi

php - Git Rebase 主冲突

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

我在将 master rebase 到其中时在分支上遇到了一些冲突。

场景是:

分支 master,进行一些更改,提交所述更改。Checkout master,进行一些更改,提交所述更改,checkout branch-1。尝试 rebase master - 冲突..

现在我有其他开发人员以类似的方式工作。

Master 在所有 repo 上保持同步,包括网络服务器,我不希望 master 的历史被更改。

如果我解决了过去与某个点发生冲突的 rebase 冲突,如果我 check out master 并将其与分支 merge - masters 历史是否会被更改 - 或者这些冲突解决方案是否会应用于所有正在 merge 的工作之上?

最佳答案

假设您有当前情况:

- A - B - C - D
\ ^
- X - Y master
^
branch1

运行 git checkout branch1; git rebase master 将从 branch1 移动提交,以便将它们应用到 master 分支之上:

              master
v
- A - B - C - D
\
- X - Y
^
branch1

这不会更改 master,但会以两种方式更改 branch1:

  1. 通过将提交 X 的父级从 A 更改为 D,您将更改提交 X 的 ID >,事实上就 Git 而言,它现在是一个全新的提交(并且由于 X 有一个新的 ID,Y 有一个新的父级,所以 Y 也会获得一个新 ID,如果分支上有更多提交,依此类推。
  2. 您需要执行的任何冲突解决都会更改提交的内容。

如果您已经将 branch1 推送到远程存储库,那么 rebase 是一个非常糟糕的主意;改变已经共享的历史只会导致问题。

假设你还没有推送 branch1,然后你可以将它 merge 到 master(使用 git checkout master; git merge branch1),这将导致 master 被快速转发到提交 Y。这为您提供了一个整洁的线性历史,而无需更改 master:

- A - B - C - D - X - Y
^
branch1 AND master

如果你已经推送了 branch1 那么你应该避免 rebase 并使用 merge 代替(使用 git checkout master; git merge branch1),这不会改变它们中任何一个的历史,但将在 master 分支上创建一个新的提交(在此图中标记为 M):

- A - B - C - D - M
\ / ^
- X - Y - - master
^
branch1

关于php - Git Rebase 主冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10757177/

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