Git学习第二章第二节

打印log

        你不断对文件进行修改,然后不断提交修改到版本库里,就好比玩RPG游戏时,每通过一关就会自动把游戏状态存盘,如果某一关没过去,你还可以选择读取前一关的状态。有些时候,在打Boss之前,你会手动存盘,以便万一打Boss失败了,可以从最近的地方重新开始。Git也是一样,每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。-----------------廖雪峰Git教程 原文

        在Git工具中我们可以去查看我们的历史修改记录,使用git log命令实现。

$ git log
commit 16d1d2014fa1c75f51ed976c5217b9c9623460c3 (HEAD -> master)
Author: WhatButWay <[email protected]>
Date:   Tue Mar 27 16:22:19 2018 +0800

    add a line to test

commit 4cf9a978bccfb14b68930470ffedcba939d78bd0
Author: WhatButWay <[email protected]>
Date:   Tue Mar 27 15:10:59 2018 +0800

    add a line

commit 7a04cc4992a1d279f0b2bde88447dc525de479c4
Author: WhatButWay <[email protected]>
Date:   Tue Mar 27 10:58:42 2018 +0800

    wrote a readme file

        如果修改过很多次的话可以按上下方向键控制显示,按Q退出历史记录列表。

        从打印的log可以看出我们打印出的记录是从当前时间依次往前推提交的版本更改记录。如果嫌输出信息太多,看得眼花缭乱,可以试试加上--pretty=oneline 不过这种方式不会打印时间戳和提交人。

回退版本

        首先,Git必须知道当前版本是哪个版本,在Git中有(HEAD->master)的表示当前版本,我们用命令时HEAD表示当前版本,上一个版本用HEAD^表示,上上个版本用HEAD^^表示,当然往上数更多的版本容易数不过来,所以写成HEAD~100代表上数第一百个版本。

$ git reset --hard HEAD^
HEAD is now at 4cf9a97 add a line

        其中 at 4cf9a97这个是刚才打印log时上个版本commit ID的前几位,后面的add a line 是我们提交时做的说明。

        我们去打开刚回退的文件发现果然回退到了上一个版本,但是我们再用git log打印版本信息时结果:

$ git log
commit 4cf9a978bccfb14b68930470ffedcba939d78bd0 (HEAD -> master)
Author: WhatButWay <[email protected]>
Date:   Tue Mar 27 15:10:59 2018 +0800

    add a line

commit 7a04cc4992a1d279f0b2bde88447dc525de479c4
Author: WhatButWay <[email protected]>
Date:   Tue Mar 27 10:58:42 2018 +0800

    wrote a readme file

        之前的版本不见了,有办法找到刚才被删的版本,可以顺着往上找,找到那个想要的版本的commit ID,然后就可以用这个ID退回那个版本。

$ git reset --hard 16d1d2014
HEAD is now at 16d1d20 add a line to test
        这样它就回来了。如果我们是关掉电脑后的第二天想要恢复那个版本,还不知道 commit ID怎么办,我们可以用 git reflog用来记录每一次版本操作:
$ git reflog
16d1d20 (HEAD -> master) HEAD@{0}: reset: moving to 16d1d2014
4cf9a97 HEAD@{1}: reset: moving to HEAD^
16d1d20 (HEAD -> master) HEAD@{2}: commit: add a line to test
4cf9a97 HEAD@{3}: commit: add a line
7a04cc4 HEAD@{4}: commit (initial): wrote a readme file

        第三行就是我们刚才想要恢复的版本。

小结

        git reset --hard commit_ID 回退到已知ID的任意版本。

        git log 打印提交历史信息

        git reflog 查看历史版本操作信息

猜你喜欢

转载自blog.csdn.net/endless_fighting/article/details/79714556