对于commit(不是push)的代码如何回滚,这块对于刚转到git的开发者还是比较陌生的。今天我来说下这块的内容:
按照惯例,先上图,下图是还没有commit任何代码的push界面,这个时候是没有commit任何内容的:
然后我修改了string.xml的内容,并且执行了commit操作:
接下来就要说如何进行revert commit了,通过选中工程,点击右键,在弹出的列表中选择Git-->Repository-->Reset HEAD...,有些人可能会说我右键弹出来的列表中没有发现有Git的选项,这个可以配置的,请戳这:
这边对上图进行分析:
Git Root:选择你要revert的目录
Current Branch:你当前在哪个branch
Reset Type:
Soft:选择这个模式意思是仅仅撤销commit而已,不影响你本地的任何文件,也不影响(index)缓存区的任何文 件。
Hard:不仅撤销commit的内容,还将本地的文件指向你commit前的版本,同时index也会指向commit前的版本。
Mixed:这个模式从我个人角度来看其实还是有点模糊的。从我的角度理解就是只是回滚index,其余的都不变。
但是这边跟大家说下,如果你把HEAD后面加个“~1”,这里的数字代表的是次数,比如你commit了三次, 你写1,就是回滚最后一次提交的,如果是2,就是后两次提交的都回滚。这时候你会发现它的功能和soft 这个模式一样了。
我把官方的说法贴上来吧:Resets the index but not the working tree (i.e., the changed files are preserved but not marked for commit) and reports what has not been updated. This is the default action.
Validate:这个选项是看当前会影响到的文件有哪些,具体影响是什么。
我这边执行下soft模式的,执行完成后,看下图,刚commit的记录已经没了:
当然你想用命令行也是一样的,
git reset [--soft | --mixed [-N] | --hard] HEAD~X X:代表次数