如何通过只知道分支名称为给定分支中的所有提交生成补丁?
此步骤是复杂工作流程的一部分,所有这些工作流程都是自动化的。因此,要求某人手动确定分支中的第一次提交不是一种选择。
请注意,任何依赖 reflog 的东西都不是一个选项,因为分支中的更改不是在本地进行的。
如何通过只知道分支名称为给定分支中的所有提交生成补丁?
此步骤是复杂工作流程的一部分,所有这些工作流程都是自动化的。因此,要求某人手动确定分支中的第一次提交不是一种选择。
请注意,任何依赖 reflog 的东西都不是一个选项,因为分支中的更改不是在本地进行的。
如果您知道您的“给定分支”是从哪个分支创建的,那么制作补丁很容易:
git diff master Branch1 > ../patchfile
git checkout Branch2
git apply ../patchfile
(你也可以生成一个没有 git 的补丁)
但是找到分支的正确“创建提交”可能很复杂:请参阅“使用 Git 查找分支点? ”
OP akirekadu使用:
git format-patch $(git merge-base --fork-point master)..branchB
您可以看到它在“git diff
工作副本和分支库之间”中使用
git apply --stat patchfile
可以使用This won't apply验证生成的补丁,但请提供补丁的详细信息。
$(git merge-base --fork-point master)..branchB
命令可能每次都找不到正确的分支根修订
顺便说一句,Phabricator通过为每次推送自动生成这些补丁文件来无缝处理这类事情。
如果您已经提交并推送了您的更改,那么您现在想要创建一个补丁文件。
即使您在该分支中有多个提交,这也会在 1 个文件中创建一个补丁
第 1 步:检查您想要的补丁的分支,就像任何功能/错误分支一样
:git checkout <branch>
第 2 步:现在这将为所有提交差异创建一个补丁,其中 master 分支与您的结帐分支,即您有结帐的上述分支。
git format-patch master --stdout > mypatch.patch