首页 > 解决方案 > 将“混合”脏分支拆分为多个干净分支

问题描述

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

我想清除它,以便我有一个干净的branchA,branchBbranchC其中的每一个,以便我以后可以对上游发出单独的合并请求。

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

因此我的问题是:

标签: gitgit-cherry-pick

解决方案


我已经创建了 branchA,使用了 git cherry-pick --no-commit master..dirtybranch,然后简​​单地手动删除了有关 subjectB 和 C 的更改。

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

要将更改分成不同的分支,您可以找到并提交所有更改branchA,存储其余更改,返回 master,创建branchB,应用存储(为您提供除来自dirtybranach之外的所有更改branchA),查找并提交更改branchB,然后整个事情再次为branchC

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


推荐阅读