In git, how do I remove a commit from one branch and apply it to a different branch?

前端 未结 2 421
温柔的废话
温柔的废话 2020-12-01 08:04

I have two branches off of master, each one for a different feature, and then I have a synthesis branch that combines the two. I committed something to the synthesis branch

相关标签:
2条回答
  • 2020-12-01 08:28

    Generally, when I do something like this, I will:

    1. Create a reverse patch file using git diff (e.g. git diff HEAD^ HEAD)
    2. Apply this reverse patch to the branch I want to remove the change from.
    3. Check out the branch I DO want the change on
    4. Use git cherry-pickto apply the applicable commit

    I believe there is an easier way, but I prefer this since I use (and remember) the diff/cherry-pick commands better

    0 讨论(0)
  • 2020-12-01 08:36

    Cherry-pick commit to target branch and reset source branch. Assuming, you want to move the latest commit from source branch to target, do:

    git checkout target
    git cherry-pick source
    git checkout source
    git reset --hard source^
    

    If the commit wasn't the last, you will have to use git rebase -i instead of the last command and choose specific commit name for your cherry-pick.

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