撤销WorkSpace中的更新
使用git checkout --<file>...
命令。
注意:使用这种方法撤销更新的时候一定要慎重,因为通过这种方式撤销后,更新将没有办法再找回。当然,如果我们已经add了的话,那么checkout是没任何作用的,我们要先取消添加才可以撤回提交,使用下述指令:
1
2
git reset HEAD Test.java
git checkout Test.java
撤销Stage中的更新
使用git reset HEAD <file>...
命令把暂存区的更新移出到WorkSpace中。
撤销Repo中的更新
撤销提交有两种方式:使用HEAD
指针和使用commit id
,在Git中,有一个HEAD指针指向当前分支中最新的提交。用HEAD代表当前版本,上一个版本就是HEAD^,再上一个版本就是HEAD^^依次类推,如果想回退到更早的提交,可以使用HEAD~n
(也就是,HEAD^=HEAD~1,HEAD^^=HEAD~2)。
1
2
3
git reset --hard HEAD^
git reset --hard HEAD~1
git reset --c2760c5512bc67a8b990c1da508d40cca623f23
恢复被撤销的提交
回退后,你突然后悔了,想回退回新的那个版本,可是遗憾的是,你键入git log
却发现没有了最新的那个版本号,这怎么办呢,没事,Git中给你提供了这颗”后悔药”,Git记录着你输入的每一条指令,键入git reflog
,你会发现,版本号就在这里,然后键入git reset --hard ad2080c
。
–hard和–soft
前面在使用reset来撤销更新的时候,我们都是使用的--head
选项,其实与之对应的还有一个--soft
选项,区别如下:
- –head:撤销并删除相应的更新。
- –soft:撤销相应的更新,把这些更新的内容放到Stage中。
删除文件
在Git中,如果我们要删除一个文件,可以使用下面的命令,git rm <file>
相比rm
只是多了一步,把这次删除的更新发到Stage中。