git版本回退

查看日志

$ git log
commit 81fe2587c1018b93d7016f69f52f532e903b780f
Author: Jdoing <703627622@qq.com>
Date:   Mon Apr 13 21:31:47 2015 +0800

    add some comment to readme.txt file

commit 28647342369fc48cde70523f2fb38f4ec67f5957
Author: Jdoing <703627622@qq.com>
Date:   Mon Apr 13 21:19:44 2015 +0800

    modify readme.txt

commit 1b73fc64b6b8de59f68cd4466ce5091040870929
Author: Jdoing <703627622@qq.com>
Date:   Mon Apr 13 21:10:14 2015 +0800

    add readme.txt file

查看命令历史

$ git reflog
81fe258 HEAD@{0}: commit: add some comment to readme.txt file
2864734 HEAD@{1}: commit: modify readme.txt
1b73fc6 HEAD@{2}: commit (initial): add readme.txt file
jiangyu@ubuntu:~/github/awesome-python-webapp$ git log

回退到某个版本

reset命令有3种方式:
- git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息.即覆盖暂存区,但不覆盖工作区.
- git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可.即不覆盖暂存区,也不覆盖工作区.
- git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容.即覆盖暂存区和工作区.

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164…882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100.

$ git reset --hard HEAD^
HEAD is now at 2864734 modify readme.txt

也可以指定版本号,不一定要指定完整版本号,只要git能匹配找到就行

$ git reset --hard 28647342369
HEAD is now at 2864734 modify readme.txt

撤消修改

命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。

$ git checkout -- readme.txt

删除文件

先删除

$ git rm test.txt 
rm 'test.txt'

后提交

$ git commit -m "rm test.txt" [master ce02a0f] rm test.txt 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test.txt

你可能感兴趣的:(git)