解决冲突导致不添加任何更改

问题描述 投票:0回答:1

假设我有一个master分支和一个feature-a分支。 feature-a待审核,但大家都很忙。我需要启动feature-b,但feature-b取决于feature-a中完成的代码。

到目前为止,我一直在从feature-b分支feature-a,然后合并feature-a可能发生的所有更改。

现在假设有人被释放并通过feature-a,因此feature-a被合并为master

现在是时候将feature-bmaster同步了。无论我是将master变基还是合并到feature-b,通常我都会遇到一些冲突,这些冲突在解决后会导致没有更改要提交,这意味着我无法提交。

我已经进行了一些谷歌搜索,实际上唯一可行的解​​决方案似乎是:

  1. 将母版合并到功能-b中,导致合并冲突。
  2. 在解决过程中进行其他更改(例如评论或其他内容)
  3. 解决冲突(仅导致一项更改,即评论)
  4. 提交

对我来说这似乎很傻:thinking_face:

在上述情况下,有人知道解决冲突/管理分支机构的更好方法吗?

git git-merge merge-conflict-resolution git-merge-conflict
1个回答
0
投票

绘制您的提交。实际上,从字面上看,可以在纸上,白板上或其他任何东西上绘制提交图(或让git log --decorate --oneline --graph为您绘制,但是如果您手工完成,将会得到更多收益)。您最终将得到如下所示的内容:

...--o--o--*   <-- master
            \
             A--B--C--D   <-- feature-a
                       \
                        E--F--G   <-- feature-b

<< [before某人被释放并合并feature-a。 (这些字母代表原始哈希ID。)然后,释放了其他人并合并了feature-a。因此,draw that:

...--o--o--*------------M <-- master \ / A--B--C--D <-- feature-a \ E--F--G <-- feature-b
如果他们以其他方式进行合并,或者首先合并了其他提交,请绘制

that

。绘制实际图形!这很重要,因为它是Git的工作方式。现在考虑将

希望得到的

作为最终合并结果。您是否愿意:...--o--o--*------------M---------M2 <-- master \ / / A--B--C--D / \ / E--F--G
或:

...--o--o--*------------M---------M2 <-- master \ / \ / A--B--C--D E'-F'-G' <--- feature-b \ E--F--G [abandoned, do not use]

或完全其他?

听起来好像您要使用第二个选项,最容易通过git rebase获得:rebase

copies

提交。我们需要将E复制到新的提交E',类似于E,但要接在M之后(使用M作为其前身,并且与M进行比较,进行相同的[[changes与E相比)。然后我们需要将D复制到F,然后将F'复制到G如果仅运行G',则Git有时1选择

太多

提交进行复制。特别是,它可能(不是我在此处绘制的示例中,而是在其他情况下)决定应首先复制git rebase masterABC当Git决定执行此操作时,您将看到您看到的那种合并冲突,因为每个提交所做的一切都已经完成。解决这些合并冲突时,您一无所有可提交。D命令对此有一个答案:在换库中期,解决了这些冲突之后,您运行git rebase。但是,以Git“预跳过”您要复制的四个提交通常更容易。为此,您可以使用git rebase --skip

git rebase --onto

例如,假设您的名字git rebase --onto master feature-a 仍然选择提交feature-a。 (请记住,随着时间的推移,分支名称move会提交,但由其哈希ID标识,则永远不会更改。)

D告诉rebase将副本放置在何处:--onto之后。 M部分告诉Git要复制什么

not

:由feature-a标识的提交,以及通过从该提交开始并在图形中向后工作而可以到达的任何更早的提交。 (要复制的提交始终是那些在您的feature-a现在结束的位置,并且要在过程结束时移动分支名称的位置,以便放弃旧的提交,而使用新的和改进的链,是您现在所在的分支name。)

绘制图形是许多Git操作的关键。

1

这取决于
graph和每次提交运行HEAD的结果。
© www.soinside.com 2019 - 2024. All rights reserved.