Git使用教程(3)

本内容根据廖雪峰的官方Git教程所编写,将操作记录下来做巩固知识所用。

本文主要从以下几个方面对Git的使用进行介绍:

  • 安装Git
  • 创建版本库
  • 时光穿梭机

本部分继续介绍时光穿梭机的内容,对其中的版本回退进行介绍。

时光穿梭机之版本回退

现在,已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下:

Git is a distributed version control system.
Git is free software distributed under the GPL.

然后尝试提交:

$ git add readme.txt
$ git commit -m "append GPL"
[master 8835644] append GPL
 1 file changed, 1 insertion(+), 1 deletion(-)

跟上述操作一样,不断的修改文件,又不断的将文件进行提交。现在可以回顾总共有三个版本的readme.txt文件已经入库,分别如下:

版本1:write a readme file

Git is a version control system.
Git is free software.

版本2:add distributed

Git is a distributed version control system.
Git is free software.

版本3:append GPL

Git is a distributed version control system.
Git is free software distributed under the GPL.

当然了,在实际工作中,我们脑子里怎么可能记得一个几千行的文件每次都改了什么内容,不然要版本控制系统干什么。版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log命令查看:

$ git log
commit 883564497bc877acf839dd2589a2cf8c6988e6a4 (HEAD -> master)
Author: legendhua 
Date:   Wed May 8 16:05:41 2019 +0800

    append GPL

commit 88d343da5f03503622ef58308374895dbeb11099
Author: legendhua 
Date:   Wed May 8 12:19:31 2019 +0800

    add distributed

commit 31b5d90aaa558fbb8a95596aea0becaf69af76cc
Author: legendhua 
Date:   Wed May 8 10:07:54 2019 +0800

    write a readme file

git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是write a readme file

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

$ git log --pretty=oneline
883564497bc877acf839dd2589a2cf8c6988e6a4 (HEAD -> master) append GPL
88d343da5f03503622ef58308374895dbeb11099 add distributed
31b5d90aaa558fbb8a95596aea0becaf69af76cc write a readme file

上面我们看到的一堆数字,比如88356..是commit id(版本号)。我们现在了解了版本查询,下面介绍如何实现时光穿梭实现版本回退,回到指定版本。

回到add distributed的版本,应该怎么做呢?首先了解一下版本号的知识,在GIt中,HEAD表示当前版本,也就是最新的提交88356...,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

现在,我们要把当前版本append GPL回退到上一个版本add distributed,就可以使用git reset命令:

$ git reset --hard HEAD^
HEAD is now at 88d343d add distributed

现在查看readme.txt文件,发现已经回退到上一个修改的版本。

$ cat readme.txt
Git is a distributed version control system.
Git is free software.

现在还可以继续回退到write a readme file版本,回退之前我们用git log再查看一下当前版本的状态,可以发现append GPL的版本已经不在了。

$ git log
commit 88d343da5f03503622ef58308374895dbeb11099 (HEAD -> master)
Author: legendhua 
Date:   Wed May 8 12:19:31 2019 +0800

    add distributed

commit 31b5d90aaa558fbb8a95596aea0becaf69af76cc
Author: legendhua 
Date:   Wed May 8 10:07:54 2019 +0800

    write a readme file

当前的版本HEAD为add distributed的版本,如果想回到回退前的append GPL怎么办,我们只需要找到append GPL的版本号,如果命令界面没有关闭的话,我们可以看到版本号为8835644...,采用上面回退的命令

$ git reset --hard 883564
HEAD is now at 8835644 append GPL

查看文件可以发现,我胡汉山又回来了,神奇不神奇。

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.

如果命令行界面都关闭了,而且电脑也重启了,现在如何寻找特定的版本号呢,Git提供了一个命令git reflog用来记录你的每一次命令

$ git reflog
8835644 (HEAD -> master) HEAD@{0}: reset: moving to 883564
88d343d HEAD@{1}: reset: moving to HEAD^
8835644 (HEAD -> master) HEAD@{2}: commit: append GPL
88d343d HEAD@{3}: commit: add distributed
31b5d90 HEAD@{4}: commit (initial): write a readme file

从历史命令中可以看到,append GPL的版本号为8835644,所以可以顺利的坐上时光车回去了。

小结

现在总结一下:

  • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
  • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本,只能查看到当前修改以前的历史(包括当前),不能往后追寻。
  • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

你可能感兴趣的:(个人总结)