0%

SourceTree commit数据后,想撤销刚刚的commit操作,并将修改的文件恢复到已暂存状态

在工作中有时会遇到这样的情况,修改完文件之后,因为各种原因,误操作导致文件本提交,但是还没有push到远端,希望撤回之前的修改,并且将改动保存到暂存区,方便再次修改或贮存操作。

问题截图如下:

使用git log查看一下日志,截图如下:

解决方法是,使用命令:

1
$ git reset --soft HEAD^

使用上面的命令,可以将刚刚commit的数据撤销回来,改动的数据不会丢失。命令撤销commit的截图:

关掉SourceTree,重新打开,发现commit的状态已经没有了,数据已经恢复到commit之前的状态。

上述命令在使用时是可以加参数的具体参数如下:

1
2
3
4
5
HEAD^    // 意思是撤销上一个commit提交,也可以写成 HEAD^1
HEAD^~2 // 撤销之前的2次commit提交
--soft // 不删除工作空间改动代码,撤销commit,不撤销git add .
--hard // 删除工作空间改动代码,撤销commit,撤销git add .
--mixed // 不删除工作空间改动代码,撤销commit,并且撤销git add .操作。这个为默认参数,git reset --mixed HEAD^和 git reset HEAD^效果是一样的。

如果commit注释写错了,只是想改一下注释,需要执行以下命令:

1
$ git commit --amend

此时会进入默认vim编辑器,修改注释完毕后保存就好了。

链接

git使用情景2:commit之后,想撤销commit