将一个 'mixed' 脏分支拆分为多个干净分支

Splitting a 'mixed' dirty branch into multiple clean branches

有一段时间我的 git 工作流程很糟糕——我在同一个 dirtybranch 中对主题 A、主题 B 和主题 C 进行了更改,实际上也在混合提交中进行了更改。

我想把它清理干净,这样我就有了一个干净的 branchAbranchBbranchC,这样我以后就可以单独提出合并请求上游。

我已经创建了 branchA,使用了 git cherry-pick --no-commit master..dirtybranch,然后简单地手动删除了关于主题 B 和 C 的更改。这虽然不优雅,但我可以对主题 B 和 C 做同样的事情,尽管它是希望更多地参与(因为它们在代码中更紧密地混合在一起)。

因此我的问题是:

I have already created branchA, used git cherry-pick --no-commit master..dirtybranch and then simply manually removed the changes regarding subjectB and C.

类似的方法是 git reset 回到 dirtybrachmaster 分支出来的点。在那里,您可以创建一个新的 branchA,保持所有更改未暂存和未提交。如果我混淆了我的提交并想将更改重组为新的提交,我通常会这样做。

要将更改分离到不同的分支中,您可以找到并提交 branchA 的所有更改,存储其余部分,返回 master,创建 branchB,应用存储(给您所有来自 dirtybranach 的更改,但来自 branchA 的更改除外),找到并提交 branchB 的更改,然后再次提交 branchC.

的所有更改

这解决了你的第二点。至于使整个事情尽可能简单的 GUI,我只能推荐 GitKraken,它有一种非常舒适的方式来 select 您想要暂存的文件的大块甚至单行。