【问题标题】:How to work on a new git branch while previous branch waits for merge如何在前一个分支等待合并时处理新的 git 分支
【发布时间】:2022-10-21 04:03:47
【问题描述】:

首先,我很抱歉提出这样的问题,因为我确信这是一个简单的问题,但我仍然没有找到解决方案,也无法理解我做错了什么。有些人问了几乎完全相同的问题(壁球部分除外),答案很明显(rebase)但对我不起作用。

我创建了一个分支 A,多次提交,然后我提交了一个合并请求 A->develop,并打开了提交压缩。

在等待 MR 被接受时,我想从分支 A 处理一个新问题。所以我从分支 A 创建了一个分支 B。

在某个时候,分支 A 被合并到了开发中,并且来自 A 的所有提交在开发中被压缩成一个提交。

一旦我在 B 上的工作完成,我创建一个新的 MR B -> 开发。但我不能,因为 develop 已经用 A 的更改进行了更新。因为我的分支 B 中已经有了这些更改,因为我从 A 创建了 B,所以这应该不是问题。但它是。

无论我从 B 做什么:

git merge develop

或者:

git rebase develop

我得到了无穷无尽的虚假冲突清单。

我怀疑问题是我的分支 B 上的提交日志包括分支 A 的所有旧提交,而开发仅包括分支 A 的一个压缩提交。所以它们不被视为相同的提交,即使我遇到冲突没有实际冲突。但我没有解决办法。

任何帮助,将不胜感激。谢谢。

【问题讨论】:

  • git rebase --interactive 并手动编辑掉“A”中的提交。或者,如果您的本地分支“A”仍然具有单独的提交 git rebase --onto develop A B,这意味着:在 B 中重新设置所有基础,因为 A 进入开发
  • 看起来不错,我下次试试。我不得不说我的rebase知识太基础了,在你的回答之后我花了一些时间研究它,现在事情变得更加清晰了。

标签: git merge rebase git-squash


【解决方案1】:

是的,您正试图在开发和 A 的合并提交之上再次重新调整所有提交 develop..A

最好使用rebase --onto

git rebase --onto develop $last_commit_of_A B

或者在没有--onto 的情况下运行,然后对那些已经合并的提交执行git rebase --skip

或使用交互式变基 (git rebase -i develop B) 并删除(或将操作更改为“删除”)已合并为 A 的一部分的行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 2019-03-17
    • 2010-12-15
    • 1970-01-01
    • 2017-08-04
    • 2017-10-11
    • 2019-03-11
    相关资源
    最近更新 更多