I accidentally made 10 commits on branch "testing" when I intended to commit them on branch "master". The other commits on the "testing" branch are garbage, so I don't want to merge it with "master". Instead, I just want to replay the last 10 commits on master.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
- git checkout master
- git whatchanged testing
- git cherry-pick _________
?
回答2:
Rebase should do it.
git rebase -p --onto master testing~10 testing
This will copy the last ten commits on testing to master and make that the new testing (the old testing will be an orphan). Then you can merge master to testing as a fast-forward.
git checkout master
git merge testing
回答3:
As said in comments, the rebase
-inspired answer is leaving the 'garbage' commits orphaned.
Just use simple tools:
git checkout master
git merge testing
git checkout testing
git reset --hard HEAD~10 # Go back 10 commits (*1)
git checkout master
(*1) You will only be "losing" commits from the testing
branch, since you'll have those commits in master
thanks to the merge
.