自学GIT内容分享2——版本管理

学新内容来自廖雪峰老师官方网站:http://www.liaoxuefeng.com/wi…

在安装完GIT和创建版本库之后,我们可以通过git addgit commit将我们新编的文件添加并上传到版本库里。
那么在学习和工作中如果出现commit过的文件被修改,并且想上传更新或更新过的文件想退回以前的版本该该怎么办呢?
想解决这个问题,首先需要了解工作区暂存区的概念。
以下,是我总结的相关内容。

一、工作区和暂存区的概念理解

之前我们所创建的learngit文件夹就是一个工作区(Working Directory),工作区里的隐藏目录.git属于GIT的版本库(Repository),里面存了很多东西,其中最重要的是stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD
简单说就是通过git add将文件添加到“暂存区”(暂时保存),通过git commit把文件提交更改(更改完成)。之后可以使用git status查看文件情况。

二、版本追回&追回后复原

·查找过往版本

当我们使用git commit完成文件更改后,需要看文件都改动过什么地方的时候,只需要使用git log命令查看。这就是版本控制系统的核心,版本控制。
在使用git log后我们可以到由近到远的版本修改记录,但是若我们对文件进行改动次数过多,则会显示非常多的繁琐内容,让我们难以抓住重点。这是只需要添加--pretty=oneline参数,使用git log --pretty=oneline命令,就可以简化输出信息如:

$ git log --pretty=oneline
3628164fb26d48395383f8f31179f24e0882e1e0 append GPL
ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed
cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file

前部大串数字字母的组合是commit id(版本号),每次修改过的文件都会有各自对应的版本号,用来以后查找GIT历史记录。

·退回过往版本

如上,通过git log找到了过往版本以及各版本的commit id。在GIT中,用HEAD表示当前版本,也就是显示版本中的最新版。那么上一个版本就是HEAD^,上上个版本就是HEAD^^,如果往上100个版本写成HEAD~100
现在把当前版本退回到上一个版本,使用git reset命令,举例如下:

$ git reset --hard HEAD^
HEAD is now at ea34578 add distributed
追回后复原

若是对版本追回后还想要复原文件,在窗口未关闭的前提下,可以向上翻找需要复原的版本号,例如需要复原的版本号前数字为“3628164…”,可以如下操作:

$ git reset --hard 3628164
HEAD is now at 3628164 append GPL

若是关闭窗口又找不到版本号,则引入新的命令git reflog,用来记录每一次命令,如:

$ git reflog
ea34578 HEAD@{0}: reset: moving to HEAD^
3628164 HEAD@{1}: commit: append GPL
ea34578 HEAD@{2}: commit: add distributed
cb926e7 HEAD@{3}: commit (initial): wrote a readme file

显示内容前部出现版本号。

小结

1.HEAD指向版本为当前版本,想要穿梭在个版本中,使用命令git reset --hard commit_id
2.git log查看提交历史,以便退回。
3.git reflog查看命令历史,以便重回未来。

    原文作者:cinnndyz
    原文地址: https://segmentfault.com/a/1190000009129961
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞