撤销git commit 的 git reset

来源:互联网 发布:java链表声明 编辑:程序博客网 时间:2024/06/05 03:29

撤销git commit 的 git reset 

soft模式

git reset --soft HEAD^

采用这种模式,git清除stage区工作区,因此,git status时就显示了stage区相对于second commit的变化。 

 

reset模式, mixed,即其默认的模式

git reset HEAD^

git将提交回滚到了second commit, 同时清空了暂存区(也称stage或index,下文用stage代替暂存区),但是工作区仍然保留,所以git status时,显示时当前工作区相对于second commit的变动。使用这种模式不用害怕吧,他并不会清除你的工作区,你在third commit做的任何操作都不会消失。、

 

hard模式

git reset --hard HEAD^

这时工作区,stage区都是干净的,然而readme.txt则残忍的回到了第二次提交是的状态。这说明了啥,采用这种模式,gitsecond commit 的内容覆盖stage区和工作区清空了暂存区暂存区,因此所有的内容都回到了second commit的状态

 

如果已经推送到远程上游分支

假设你有3个commit如下:

commit 3    commit2   commit1

其中最后一次提交commit 3是错误的,那么可以执行:

git reset --hard HEAD~1

你会发现,HEAD is now at commit 2

然后再使用git push --force将本次变更强行推送至服务器。这样在服务器上的最后一次错误提交也彻底消失了。

值得注意的是,这类操作比较比较危险,例如:在你的commit 3之后别人又提交了新的commit 4,那在你强制推送之后,那位仁兄的commit 4也跟着一起消失了。

 

 

原创粉丝点击