浅入Git学习③--Git操作之版本回退

实际工作中,我们不可能记得我们之前都修改了什么内容,在Git中,我们可以使用命令 git log来查看以前都都修改了什么

$ git log
commit 1e3a08996ed352025fdfdedf38180a8e079bbef8 (HEAD -> master)
Author: change_pan 
Date:   Wed Mar 21 16:25:33 2018 +0800

    add 44444

commit d2c30a6cfb53608be00096562381afad88043f2e
Author: change_pan 
Date:   Wed Mar 21 16:19:58 2018 +0800

    add 33333

commit bc82d0954c42e9289f464b155828c9262e5835f7
Author: change_pan 
Date:   Wed Mar 21 16:18:25 2018 +0800

    add text file

git log命令可以显示最近3次的提交日志,如果嫌弃内容太多,可以加上 --pretty=oneline参数:

$ git log --pretty=oneline
1e3a08996ed352025fdfdedf38180a8e079bbef8 (HEAD -> master) add 44444
d2c30a6cfb53608be00096562381afad88043f2e add 33333
bc82d0954c42e9289f464b155828c9262e5835f7 add text file

类似这种le3a08996....bbef8的是commit ID

好了,讲了这么多,我们回归正题,如何进行版本回退

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上个版本就是HEAD^^,如果要是有个100个版本,我们就不能写100个^,所以可以写成HEAD~100

现在,我们要回退到上一个版本"add 33333",就可以使用 git reset命令

$ git reset --hard HEAD^
HEAD is now at d2c30a6 add 33333
$ cat readme.text
{\rtf1\ansi\ansicpg936\cocoartf1561\cocoasubrtf100
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
\f0\fs24 \cf0 111111\
22222\
33333}

使用cat readme.text可以查看文本内容

如果我想再回到"add 44444"这个版本,只要你的终端没有关闭,那就没关系了,直接找到commit ID ,然后使用git reset命令

$ git reset --hard 1e3a08996ed352025fdfdedf38180a8e079bbef8
HEAD is now at 1e3a089 add 44444
$ cat readme.text
{\rtf1\ansi\ansicpg936\cocoartf1561\cocoasubrtf100
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
\
\f0\fs24 \cf0 111111\
22222\
33333\
44444}

然后我们就回到了"add 44444"这个版本,是不是很神奇

又如果我们的终端关闭了,commit id 找不到了,仍然没关系 使用 git reflog命令,可以查看到你之前的操作

$ git reflog
1e3a089 (HEAD -> master) HEAD@{0}: reset: moving to 1e3a08996ed352025fdfdedf38180a8e079bbef8
d2c30a6 HEAD@{1}: reset: moving to HEAD^
1e3a089 (HEAD -> master) HEAD@{2}: reset: moving to 1e3a08996ed352025fdfdedf38180a8e079bbef8
d2c30a6 HEAD@{3}: reset: moving to HEAD^
1e3a089 (HEAD -> master) HEAD@{4}: commit: add 44444
d2c30a6 HEAD@{5}: commit: add 33333
bc82d09 HEAD@{6}: commit: add text file

然后我们就找到了"add 44444"这个版本的commit ID

小结:

           1、HEAD指向的版本是当前版本,Git允许我们在版本之间退回,使用命令 git reset --hard commit_id

           2、使用命令git log可以查看提交日志

           3、使用命令git reflog可以查看到命令历史

你可能感兴趣的:(Git学习)