更正 git 操作以合并分支的一部分

Correct git operation to merge portion of a branch

我有一个 git 分支,我正在该分支上开发一项功能,该功能需要更改代码中不太相关的部分。

我不得不停止在此分支上的开发,以便在优先级已更改的另一个分支上处理功能。此分支使用那些不太相关但在第一个功能分支上更改的代码部分。

第一个功能还没有完成,但它在历史上的某个时间点是稳定的,因此我想将到那个时间点的所有更改与 master 合并,但不是任何以后的提交,这样新的第二个功能分支使用在第一个功能分支中不太相关的已更改代码的较新结构。

master A---B---C---D
            \
f1           E---F---G---H

在上面的例子中,H 并不稳定,但是 G 是稳定的,D 的新分支应该建立在这个工作上而不是旧的工作上。

所以对我来说,我似乎想在 G 处合并到 D 上,并包含 G 的所有历史……这是正确的想法吗?

这种操作在 git 术语中叫什么?也许从 E 到 G 的提交范围的樱桃挑选?

或者也许可以从 G 分支出我的新分支,然后在 D 上变基? 谢谢

我想你只是想将 G 合并到 D:

git checkout D
git merge G

之后您的历史记录将如下所示:

master A---B---C---D---M <-- HEAD
            \         /
f1           E---F---G---H

我建议不要将 E-G 变基到 D 之上,因为以后将 H 合并到 master 中也会困难得多。