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



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

我想清除这一点,这样我就可以为每一个都有一个干净的branchAbranchBbranchC,这样我以后就可以对上游进行单独的合并请求。

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

因此,我的问题是:

  • 有没有一种更优雅(即更简单)的方法可以做到这一点,尤其是当您需要逐行浏览文件以选择要保留的更改(gui?)时?我知道例如meld或kdiff,但我不知道如何在这里应用它们
  • 由于我已经将受试者A的更改"挑选"到branchA中,有没有办法将dirtybranch中的更改挑选到例如branchB中,"除了"我已经放入branchA中的更改?(同样,dirtybranch->branchC"除了"branchAbranchB)

我已经创建了branchA,使用了gitcherry-pick——没有提交master。。dirtybranch,然后简单地手动删除关于主题B和C的更改。

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

要将更改分为不同的分支,您可以找到并提交branchA的所有更改,隐藏其余更改,返回master,创建branchB,应用隐藏(为您提供dirtybranach中的所有更改(除了branchA中的更改)),找到并提交branchB的更改,并为branchC再次提交所有更改。

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

相关内容

  • 没有找到相关文章

最新更新