如何为分支中的所有提交生成补丁?

How to generate patch for all commits in a branch?

如何通过只知道分支名称为给定分支中的所有提交生成补丁?

此步骤是复杂工作流程的一部分,所有工作流程均已自动化。因此,要求某人手动确定分支中的第一个提交不是一个选项。

请注意,任何依赖 reflog 的东西都不是一个选项,因为分支中的更改不是在本地进行的。

如果您知道您的“给定分支”是从哪个分支创建的,那么making a patch is easy:

git diff master Branch1 > ../patchfile
git checkout Branch2    
git apply ../patchfile

(你可以生成一个patch applicable without git too

但是找到分支的正确“创建提交”可能很复杂:请参阅“Finding a branch point with Git?

使用的OP akirekadu

git format-patch $(git merge-base --fork-point master)..branchB 

你可以看到它用在“

legends2k adds :

One can verify the generated patch with git apply --stat patchfile
This won't apply, but give the details of the patch.


警告:AGP notes 那:

$(git merge-base --fork-point master)..branchB command may not find the correct branch root revision every time


ijoseph points out

Incidentally, Phabricator handles this kind of stuff seamlessly by automatically generating those patch files for each push.

如果您已经提交并推送了您的更改,现在您想要创建一个补丁文件。

这将在 1 个文件中创建补丁,即使您在该分支中有多个提交也是如此

第一步: 像任何 feature/bug 分支
一样检查你想要补丁的分支 例如:git checkout <branch>

第二步: 现在这将为所有与 master 分支和你的结账分支的提交差异创建一个补丁,即你有结账的上面的分支。

git format-patch master --stdout > mypatch.patch