git开始篇-版本回退

版本回退
在我们工作过程中,希望从历史某个时刻重新开始,也就是每当文件修改到一定程度的时间,就可以保存一个快照,这个快照的操作就是Git里面的commit,一旦你的文件改乱了,或者误删除了,还可以从最近一个commit恢复。
下面我们测试一下。
版本1:first

this is a git project
git is a version control system
git can manager project
first

版本2:second

this is a git project
git is a version control system
git can manager project
second

版本3:third

this is a git project
git is a version control system
git can manager project
third

Git中有一个命令可以知道历史这个修改记录 git log

$ git log
commit d8b85103d71747ae167441f431a9678c42eccc1b (HEAD -> master)
Author: xlucas @163.com>
Date:   Wed Aug 29 23:35:27 2018 +0800

    third

commit 7af7dccdd20424d7ed2bd8453ff189326fab974c
Author: xlucas @163.com>
Date:   Wed Aug 29 23:34:04 2018 +0800

    second

commit e0153cf7fbbfcedf13d2deb1203175f5405fdf47
Author: xlucas @163.com>
Date:   Wed Aug 29 23:33:37 2018 +0800

    first

commit c55f116cdfb1389b7d97fc1400b3ff85985a7304
Author: xlucas @163.com>
Date:   Mon Aug 27 23:41:51 2018 +0800

    add one line

git log 命令显示从最近到最远的提交日志

如果觉得输出信息太多,可以加上 --pretty=oneline

$ git log --pretty=oneline
d8b85103d71747ae167441f431a9678c42eccc1b (HEAD -> master) third
7af7dccdd20424d7ed2bd8453ff189326fab974c second
e0153cf7fbbfcedf13d2deb1203175f5405fdf47 first
c55f116cdfb1389b7d97fc1400b3ff85985a7304 add one line
c976d94bfa9e23181ee26638697f5a6f766a072f put a readme file

现在我们开始回退到指定的版本,first
在回退之前,我首先要知道当前是哪个版本,在git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,如果往上10个版本可以写成HEAD~10
我们把当前版本回退到first就可以使用 git reset

$ git reset --hard HEAD^^
HEAD is now at e0153cf first

查看是不是first版本内容

$ cat readme.txt
this is a git project
git is a version control system
git can manager project
first

我们使用git log查看,当前版本是first,上面second和third版本不见了

$ git log
commit e0153cf7fbbfcedf13d2deb1203175f5405fdf47 (HEAD -> master)
Author: xlucas @163.com>
Date:   Wed Aug 29 23:33:37 2018 +0800

    first

commit c55f116cdfb1389b7d97fc1400b3ff85985a7304
Author: xlucas @163.com>
Date:   Mon Aug 27 23:41:51 2018 +0800

    add one line

commit c976d94bfa9e23181ee26638697f5a6f766a072f
Author: xlucas @163.com>
Date:   Mon Aug 27 22:58:00 2018 +0800

    put a readme file

如果这个时候你想回到未来的某个版本,只要你命令行还没有关闭,可以使用commit id来回到未来的版本,例如想回到 second版本。可以使用如下操作

$ git reset --hard 7af7d
HEAD is now at 7af7dcc second

commit id 不要补全了,写前面几位,git会自动去找,
现在查看readme.txt内容

$ cat readme.txt
this is a git project
git is a version control system
git can manager project
second

当你回退到某一个版本时候,过了几天又希望回退到目前的版本。当你现在是first版本的时候,如果你要回退到third版本的时候,就必须要找到third的commit id。Git提供了一个命令git reflog用来记录你的每一次命令

$ git reflog
7af7dcc (HEAD -> master) HEAD@{0}: reset: moving to 7af7d
e0153cf HEAD@{1}: reset: moving to HEAD^^
d8b8510 HEAD@{2}: commit: third
7af7dcc (HEAD -> master) HEAD@{3}: commit: second
e0153cf HEAD@{4}: commit: first
c55f116 HEAD@{5}: commit: add one line
c976d94 HEAD@{6}: commit (initial): put a readme file

在这里你可以找到你需要回退的third 版本的commit id d8b8510

$ git reset --hard d8b8510
HEAD is now at d8b8510 third
$ cat readme.txt
this is a git project
git is a version control system
git can manager project
third

总结
HEAD指向的版本就是当前版本,因此,回退版本,使用命令git reset –hard commit_id。
回退前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

你可能感兴趣的:(Git)