git快速入门(三)版本回退

在开始之前,首先介绍一下git仓库的三个部分,这是必须要了解的三个概念         ——3分钟

工作目录,暂存区,master分支

简单地说,

你平时在浏览和编辑的那些文件所在的区域就叫工作目录,工作目录是你能直接接触到文件的地方

当你在工作目录编辑完文件,然后用git add命令添加文件的时候,这个文件实际上被添加到了暂存区

当你一次或多次添加了文件,最后用git commit命令提交的时候,这些文件的信息就会从暂存区同步到master分支

一张图表示

git快速入门(三)版本回退_第1张图片

图片来自网络,侵删

git log

回到主题,当你提交完毕后,如何查看自己已经进行过的操作呢?git log可以帮助你做到这一点                      ——1分钟


$ git log

commit d837e2cd9e964b813ef2c5cb40bb3ce9af68fd22

Author: Name
Date:   Mon Jul 18 19:23:03 2016 +0800

    add readme.txt


commit后的那一串表示此次操作的标识

author 操作者

date 操作时间

最后是你-m后面留下的提示信息


一大串看得眼花缭乱,使用

$ git log --pretty=oneline

命令可以简化信息


d837e2cd9e964b813ef2c5cb40bb3ce9af68fd22 add readme.txt

只显示标识和提交信息


那么,有了这些信息有什么用呢,这涉及git的主要作用——版本控制了                                        ——五分钟

git reset              


让我们回到工作区,在刚才新建的readme.txt里添加几行文字,假设你在里面打了一串乱码

git快速入门(三)版本回退_第2张图片

保存之后用git status查看当前状态

$ git status


此时你回想起要先git add,然后执行git commit,并且你在执行git commit时留下了一条叫“asdf”的信息

$ git add readme.txt
$ git commit -m "asdf"

显示

[master 5a65804] asdf
 1 file changed, 2 insertions(+)


然后你用git log --pretty=oneline查看刚才的操作

5a65804fefe8abeea5b862304032bfc9aa435460 asdf
d837e2cd9e964b813ef2c5cb40bb3ce9af68fd22 add readme.txt


你发现多了一条名为asdf的操作


这时你就可以进行版本回退的操作了

$ git reset --hard d837

--hard不能丢,hard后面接标识,一般取前4位就行

顺便一提,git里的参数,如果字母数量大于1个,一般都是两条横杠,比如之前的--pretty


重新打开文本,发现恢复到一个字没有的状态

git快速入门(三)版本回退_第3张图片

当然,不仅可以回退,当你回退后又想前进时,同样用这个命令,标识改成你想要的版本

$ git reset --hard 5a65     


这里的 5a65asdf标识的前4位

HEAD is now at 5a65804 asdf


这是一个用来跳跃版本的命令,在跳跃的同时修改暂存区和工作区


这个命令的快捷方式

$ git reset --hard HEAD^

HEAD^代表上一次提交时的版本
同理HEAD^^代表上上个版本,几个^代表几个版本

其实,git log命令存在一个隐含的小问题,那就是只能显示此次会话的操作,假设你回退了几个版本,关闭bash再打开,使用这个命令会发现回退的那几个版本看不到标识了,想再前进好像不可能了,实际上,你可以用这个命令
$ git reflog

它能让你看到你所有的操作,试试看



你可能感兴趣的:(git基础)