git解决错误提交分支

[master] ... 0 - (1) - (m1) - 2 - (3) - 4
              \
[develop]      5 - 6 - 7

说明: 带括号的都是错误的commit,m1是merge提交,每个数字代表commit和commit号 需要放到develop分支

我的做法(目前看来没问题,不确定是否正确):

git checkout master
git pull
git diff 0 1 > patch1    (这两步的主要想法是物理备份一下,万一改乱了,还有个修改记录)
git diff 2 3 > patch2

git revert m1 -m 2    (这样直接会将1 和 m1产生修改的所有文件反转)
git revert 3

此时,分支状态是:

[master] ... 0 - (1) - (m1) - 2 - (3) - 4 - rm1 - r3
              \
[develop]      5 - 6 - 7

然后将错误提交应用到develop上

git checkout develop
git pull

git cherry-pick 1
git cherry pick 3
(进入merge按照提示解决、继续)

此时分支状态是:

[master] ... 0 - (1) - (m1) - 2 - (3) - 4 - rm1 - r3
              \
[develop]      5 - 1 - 6 - 7 - 3    (这里看commit的时间,进行的排序)

以上是大概记录

参考资料:

猜你喜欢

转载自my.oschina.net/kidou/blog/1631507
今日推荐