Android|Android Studio如何回滚已经commit(提及到本地)的代码

转自:Android Studio如何回滚已经commit的代码
今天,在修改代码的时候,因为不注意,把不需修改分支的代码修改并提交的本地了,在将要提交到远程仓库这千钧一发之际发现分支不对,于是就想把已经commit(提及到本地)的代码回滚到本地改动。有问题,问“度娘”嘛,于是转了上述文章,正文:
快速解决: 1.首先,鼠标右键项目-->Git-->Reponsitory-->Reset HEAD
2.执行下面的操作,Reset Type选择 Soft 表示保存所有的提交操作,^表示退回到上一次提交。

Android|Android Studio如何回滚已经commit(提及到本地)的代码
文章图片
图1
详细解决: 【Android|Android Studio如何回滚已经commit(提及到本地)的代码】对于commit(不是 push)的代码如何回滚,这块对于刚转到 git 的开发者还是比较陌生的。今天我来说下这块的内容:
按照惯例,先上图,下图是还没有 commit 任何代码的 push 界面,这个时候是没有 commit 任何内容的:

Android|Android Studio如何回滚已经commit(提及到本地)的代码
文章图片

然后我修改了 string.xml 的内容,并且执行了 commit 操作:

Android|Android Studio如何回滚已经commit(提及到本地)的代码
文章图片

接下来就要说如何进行 revert commit 了,通过选中工程,点击右键,在弹出的列表中选择 Git-->Repository-->Reset HEAD...,之后出现如下图所示:
Android|Android Studio如何回滚已经commit(提及到本地)的代码
文章图片

这边对上图进行分析:
  • Git Root:选择你要revert 的目录。
  • Current Branch:你当前在哪个branch
Reset Type:
  • Soft:选择这个模式意思是仅仅撤销 commit 而已,不影响你本地的任何文件,也不影响(index )缓存区的任何文 件。
  • Hard:不仅撤销 commit 的内容,还将本地的文件指向你 commit 前的版本,同时index也会指向 commit 前的版本。
  • Mixed:这个模式从我个人角度来看其实还是有点模糊的。从我的角度理解就是只是回滚 index,其余的都不变。
  • To Commit:填写 HEAD 后面加个 “~1”
但是这边跟大家说下,如果你把 `HEAD` 后面加个 `“~1” `,这里的数字代表的是次数, 比如你` commit` 了三次, 你写 `1` ,就是回滚最后一次提交的, 如果是 `2` ,就是后两次提交的都回滚。这时候你会发现它的功能和 `soft `这个模式一样了。官方说法:Resets the index but not the working tree (i.e., the changed files are preserved but not marked forcommit) and reports what has not been updated. This is the default action.

  • Validate:这个选项是看当前会影响到的文件有哪些,具体影响是什么。
    [图片上传中...(image.png-27c455-1547462776066-0)]
我这边执行下 soft 模式的,执行完成后,刚 commit 的记录已经没了,并且曾经 commit 的文件,已经回到本地改动。
命令行解决:
git reset [--soft | --mixed [-N] | --hard] HEAD~XX:代表次数

    推荐阅读