gpt4 book ai didi

git:解决 merge 冲突而不执行 merge

转载 作者:IT王子 更新时间:2023-10-29 01:03:33 25 4
gpt4 key购买 nike

我只是想知道,如果有什么方法可以解决两个 git 分支的 merge 提交,而无需实际 merge 它们。

假设,我有一个分支“featureMy”;我的同事创建了另一个分支“featureHis”。两个分支都在“master”分支上创建。

然后我的同事为他的分支“featureHis”创建了一个 merge 请求到 master。然后,当我将“featureMy”的 merge 请求创建到 master 中时,我想确保在 merge “featureHis”后它不会与 master 发生冲突。

通常,我之前会将“featureHis” merge 到“featureMy”中。然而,这并不是那么令人满意,因为我有一个额外的 merge 提交作为“噪音”并且我的 merge 请求将包含来自“featureHis”的更改。

有没有一种方法可以解决 merge 冲突,而无需创建 merge 提交?

亲切的问候

最佳答案

避免 merge 提交的一种标准方法是使用 rebase 代替 merge 。考虑以下场景:

master:     A
featureMy: A -- B
featureHis: A -- C

假设master 中只有这两个分支存在,那么你们中的一个将首先与master merge 。假设是您的同事先到达那里。然后图表看起来像这样:

master:     A -- C
featureMy: A -- B
featureHis: A -- C

您同事的提交现在位于 master 分支中。现在,如果您使用基于 merge 的工作流,您将首先将 master merge 到您的分支中,然后再将您的分支 merge 回 master。这将导致:

master:     A -- C -- E
featureMy: A -- B -- D
featureHis: A -- C

现在你的分支 master 分支都有丑陋的 merge 提交。但是,如果您重新设置您的分支在 master 上,您将得到:

master:     A -- C
featureMy: A -- C -- B' (B' indicates that this a new commit, not B)
featureHis: A -- C

现在您的分支 featureMy 实际上是 ahead master 分支。您可以直接将您的提交推送到 master 之上,而不会发生冲突。这导致下图:

master:     A -- C -- B'
featureMy: A -- C -- B'
featureHis: A -- C

请注意,没有任何地方的 merge 提交。事实上,您的 featureMy 分支和 master 都有相同的线性历史。

git rebase 万岁。

关于git:解决 merge 冲突而不执行 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38616937/

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