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

最后都变了- 提交于 2019-12-17 09:33:17

问题


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, but now I see I would have rather applied that change to one of the branches particular to that feature. Is there a way to do this unapply/apply somewhere else maneuver with git?


回答1:


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.




回答2:


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



来源:https://stackoverflow.com/questions/1773731/in-git-how-do-i-remove-a-commit-from-one-branch-and-apply-it-to-a-different-bra

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!