您现在的位置: 365建站网 > 365学习 > git 如何撤销 commit ,返回到未提交状态

git 如何撤销 commit ,返回到未提交状态

文章来源:365jz.com     点击数:1245    更新时间:2018-07-25 10:17   参与评论

如何把最后一次commit撤销回Changes not stagedUntracked files区别呢?

有3种情况:

(1)把最后的commit切回Changes to be committed状态,使用命令:

git reset --soft HEAD^

(2)把最后的commit切回Changes not staged for commit状态,使用命令:

git reset HEAD^

(3)把Changes to be committed状态切回Changes not staged for commit状态,使用命令:

git reset HEAD <file>...

最后一条命令在git命令行也有提示,不需要记住。

在 A 状态 commit 后,又进行了一些编辑,这些编辑并不想全部保存 commit 上去。这个状态叫 C。后来一不小心,把 C 状态 commit 了,工作区的内容被提交至暂存区,状态变为 B commit 了。现在要撤消 commit C => B 这个动作,并使文件恢复成 C 状态。

预热:


本文将使用到的命令:(看完再尝试)

命令用途示例
git log查看历史 commit
git reflog查看最近操作一般会有 HEAD@{N} 表示第几步操作,逆序
git reset重置当前空间git reset commitHash 回撤至 commitHash 次提交结果

本文相关概念:

概念解释
工作区编辑文件、写代码的“地方”,修改过的代码放在此处
暂存区commit 后放置的地方,保存修改,等待提交

解决方案:

git log

查看目前所有提交。找到 commitA 与 commitB 的 hash 值。

git reset –hard commitB_hash

将工作区,暂存区强制恢复成 commitB 的状态

git reset commitA_hash

恢复 commitA 状态的源码。 
此时由于 工作区存放的是 commitB 的代码,而暂存区存放的是 commitA 的代码。由 A –> B 的状态就是错误提交前的编辑状态。

git 回滚到之前某一commit

git log

git reset –hard 8ff24a6803173208f3e606e32dfcf82db9ac84d8

1532485365527526.jpg

获取完整commit id(如:14123c8877e6ebdc220e205d92fc70feaf06dab1)

git rev-parse HEAD1

获取short commit id(如:14123c8)

git rev-parse --short HEAD


如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (1245人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------