How to move git commits from master to a different existing branch
本问题已经有最佳答案,请猛点这里访问。
我向
如果我没弄错的话,你有两个同步分支,
如果是这样,我们有:
1 2 3 4 5 6 7 | ---------------- git log in dev xxx yyy ... ---------------- |
。
还有:
1 2 3 4 5 6 7 8 9 10 11 | ---------------- git log in master ccc bbb aaa <---- here you forgot to switch branch xxx yyy ... ---------------- |
解决方案是:
首先,确保:
1 | git status -s |
。
返回空结果。
接下来,从
1 2 | git checkout dev git merge master |
。
现在回到你身边,1号[3号]:
1 | git checkout master |
删除不必要的提交:
1 | git reset --hard HEAD~3 |
。
记住:
为了适应另一个分支,您可以使用樱桃采摘:
1 | git cherry-pick <commit> |
删除并不是那么容易。您可以使用rebase和squash或编辑提交:
1 | git rebase -i <commit>~1 |
号
但是,我不确定在重新设置期间选择"编辑"时,是否也可以编辑文件,而不是只编辑提交消息。
你可以在
在你犯错误之前,你犯了一个错误。这将打开一个编辑器,显示将受钢筋影响的每个提交。删除与要放弃的提交对应的行,然后退出编辑器。
通常有几种方法可以在Git中执行相同的操作—一种可能的方法:
1 2 3 4 | git checkout develop git cherry-pick XXX // XXX being the sha1 of the commit you want to grab git checkout master git rebase --interactive HEAD~IDX // IDX being the position of the last"good" commit compared to HEAD |
最后一个命令将显示从头部到最后一个良好提交的所有评审,您所要做的就是删除要移动到分支开发的提交行。