今天,在修改代码的时候,因为不注意,把不需修改分支的代码修改并提交的本地了,在将要提交到远程仓库这千钧一发之际发现分支不对,于是就想把已经commit(提及到本地)的代码回滚到本地改动。有问题,问“度娘”嘛,于是转了上述文章,正文:
快速解决:
1.首先,鼠标右键项目-->Git-->Reponsitory-->Reset HEAD
。
2.执行下面的操作,Reset Type
选择 Soft
表示保存所有的提交操作,^
表示退回到上一次提交。
详细解决:
对于commit
(不是 push
)的代码如何回滚,这块对于刚转到 git
的开发者还是比较陌生的。今天我来说下这块的内容:
按照惯例,先上图,下图是还没有 commit
任何代码的 push
界面,这个时候是没有 commit
任何内容的:
然后我修改了
string.xml
的内容,并且执行了commit
操作:
接下来就要说如何进行
revert commit
了,通过选中工程,点击右键,在弹出的列表中选择 Git-->Repository-->Reset HEAD...
,之后出现如下图所示:
这边对上图进行分析:
-
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 for commit)
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~X X:代表次数