从两个不按顺序不在头部的提交创建补丁

Create patch from two commits not in sequence not at the head

我有一个只有一个分支和 10 个提交的 repo。我想为影响回购中两个文件的所有提交创建一个补丁,例如提交 #3、4 和 7,即不是头部,不是按顺序,也没有标记。我将提交的范围保持在很小的范围内,这样它们就不会影响不相关的文件。

我应该怎么做?

我在网上查看了很多示例,包括 cherry-pick、squash 和检查临时分支中的特定提交,但是 none 这些似乎接近我的场景,而我的各种可能性都让人头晕目眩。

创建一个临时分支

git checkout -b tmpb  #3^

Cherry-pick 将 #3、4 和 7 提交到分支中

git cherry-pick #3
git cherry-pick #4
git cherry-pick #7

将它们压缩成一个提交

git rebase -i #3^

使用git format-patch创建补丁

git format-patch master

请注意,命令中的 #3#4#7 应分别替换为 SHA1