在使用git管理代码过程中,很多人应该遇到过一些场景:我已经提交了commit信息,但是我想反悔,不想提交了这个信息,或者公共分支上我提交了commit信息,别人也提交了commit,但是我的commit的代码有些问题,想撤回来不提交。
这种情况下有很多的方式来解决,无非是操作多少和风险的大小而已,比如:
公共分支上找到不同分支的父节点,reset以后才重新提交,但是当commit信息混合到一起后,你想找都commit信息都困难。
还有一种相对省事的方法你在自己的分支上把不要的都干掉后重新提交,但是如果是上线时候,这样风险也很大。
当然还有其他的一些方式方法
还有一种相对简单的方式,那就是 revert 方式(反做撤销)。
git revert -n commit-id
只会反做commit-id对应的内容,然后重新commit一个信息,不会影响其他的commit内容
git revert -n commit-idA..commit-idB
反做commit-idA到commit-idB之间的所有commit
注意:使用-n是应为revert后,需要重新提交一个commit信息,然后在推送。如果不使用-n,指令后会弹出编辑器用于编辑提交信息
在git操作过程中,最不想看到的一种情况就是冲突,但是,冲突就是一个狗皮膏药,永远避免不了,revert也跑不了这个魔咒,那么我们改怎么处理这个情况
git revert --abort
当前的操作会回到指令执行之前的样子,相当于啥也没有干,回到原始的状态
git revert --quit
该指令会保留指令执行后的车祸现场
如果遇到冲突可以修改冲突,然后重新提交相关信息
- git add .
- git commit -m "提交的信息"
git reset 是回滚到对应的commit-id,相当于是删除了commit-id以后的所有的提交,并且不会产生新的commit-id记录,如果要推送到远程服务器的话,需要强制推送-f
git revert 是反做撤销其中的commit-id,然后重新生成一个commit-id。本身不会对其他的提交commit-id产生影响,如果要推送到远程服务器的话,就是普通的操作git push就好了