如何以交互方式将块(diff hunks)分配给一组新提交?

How can I interactively assign chunks (diff hunks) to a set of new commits?

有时,在我对多个文件进行多次更改后,我想将它们拆分成一组新的提交。我知道 git add--patch 选项和 git 的交互模式。但据我所知,这些迫使我遍历所有块,决定是否要暂存它们,然后提交已暂存的块。我必须为每个新提交重复该过程。因此,我必须多次查看某些块,直到最终达到正确的提交。

是否有命令或工具可以让我仅一次完成所有更改,将每个更改分配给一组(不断增加的)目标提交,并最终进行这些提交?

简短的回答是否定的,没有为此的工具。

您不是唯一想要它的人:请参阅 . A really good implementation is, however, extremely difficult. I have a not-fully-baked idea of a way to build a kind of half-assed(或至少,未完全评估)实施,我在对该问题的回答中对此进行了概述。