How to generate patch for all commits in a branch?

前端 未结 1 1905
眼角桃花
眼角桃花 2020-12-23 11:18

How can I generate patch for all commits in a given branch by knowing only the branch name?

This step is part of a complex workflow all of which is being automated.

相关标签:
1条回答
  • 2020-12-23 11:45

    If you know from which branch your "given branch" has been created, then making a patch is easy:

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

    (and you can generate a patch applicable without git too)

    But finding the right "creation commit" of a branch can be complex: see "Finding a branch point with Git?"

    The OP akirekadu used:

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

    You can see it used in "git diff between working copy and branch base"

    legends2k adds in the comments:

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


    Warning: AGP notes in the comments that:

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


    ijoseph points out in the comments

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

    0 讨论(0)
提交回复
热议问题