场景
- 假设要删除刚刚提交到feature_b分支的commit。
步骤
- 切换到feature_b分支
-
选中要删除的commit节点的前一个节点,执行「重置」操纵,如下图:
-
在弹出的框中,我们这样选择先
-
我们可以看到,虽然commit被删除了,但其实改动还在,我们只需要丢失本地改动就好了
-
刚才其实还有其他选项,比如选择「强行合并」,那么那个commit直接就被丢弃了,不会像刚才那样,产生Uncommitted changes,还需要手动丢弃改动
- 其实还有一种选项,叫「软合并」,这种介于「混合合并」和「强行合并」中间,即:改动还在,但你改动被
git add .
了
「软合并」效果如下:
- 以上操作(各种reset),如果一开始已经push到remote了,还需要
git push --force
-
其实还有一种操作,叫做「提交回滚」,通过revert来实现的
-
操作结果如下,是通过一次新的commit来把错误的commit抹掉