美文网首页
git 的使用(一)

git 的使用(一)

作者: XZ阳光小熊 | 来源:发表于2016-07-11 22:43 被阅读54次

    一、第一步打开终端输入git 检测是否安装git,如果已经安装好了会有如下效果

    终端代码执行效果
    如果你碰巧用Debian或Ubuntu Linux,通过一条sudo apt-get install git
    就可以直接完成Git的安装,非常简单。更多方法可以百度,或者访问下面地址
    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

    二、第二步创建一个新目录在终端输入以下代码:

    * mkdir learngit 创建文件夹learngit

    输入代码

    * cd mkdir 进入文件夹中

    进入文件夹中 创建文件夹

    三、第三步建立git仓库输入 git init

    输入代码

    从下面的图我们可以看到,learngit 中的文件都是隐藏文件必须用编译器打开才能看到文件,创建完git仓库我们就可以看到文件夹下多了一个后缀为.git 的文件夹。


    建立仓库前 建立仓库后 文件夹

    四、第四步,接着在目录下新建一个文档,learngit.txt,内容我们先这样写(至于为什么这样写,主要因为本人比较喜欢古诗词):

    文本内容

    五、第五步,我们使用git add这个命令,将文件添加到仓库中:

    终端代码

    六、第六步,接下来,我们使用git commit这个命令,将文件提交到仓库中:

    终端代码以及执行效果

    -m后面的文字是本次提交到仓库中的注释,每次提交时可以告诉大家我这次干了什么。

    七、第七步,修改文件,我们删除learngit.txt文件中的最后一行,我们运行git status
    来查看一下。

    文本内容 终端代码以及执行效果

    git status命令可以让我们实时掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。

    虽然Git告诉我们readme.txt被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的readme.txt,所以,需要用git diff这个命令看看:

    终端代码执行效果

    git diff顾名思义就是查看difference(差异),显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到,我们删除了最后一行诗句。

    知道了对readme.txt作了什么修改后,再把它提交到仓库就放心多了,提交修改和提交新文件是一样的两步,第一步是git add:

    终端代码执行效果

    同样没有任何输出。在执行第二步git commit之前,我们再运行git status看看当前仓库的状态:

    终端代码执行效果

    git status告诉我们,将要被提交的修改包括readme.txt,下一步,就可以放心地提交了,输入git commit -m "add distributed":

    终端代码执行效果

    提交后,我们再用git status命令看看仓库的当前状态:

    终端代码执行效果

    Git告诉我们当前没有需要提交的修改,而且,工作目录是干净(working directory clean)的。

    八,第八步版本退回
    上面我们学习了怎样修改文件,现在我们再练习一次,于是我们在readme.txt中再修改一点内容。

    文本内容

    然后添加并提交到仓库。

    终端代码执行效果

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

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

    终端代码执行效果

    git log命令显示从最近到最远的提交日志,我们可以看到2次提交。如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

    终端代码执行效果

    需要友情提示的是,你看到的一大串类似3628164...882e1e0的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到的commit id和我的肯定不一样,以你自己的为准。为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。


    好了,现在我们启动时光穿梭机,准备把readme.txt回退到上一个版本,也就是“add distributed”的那个版本,怎么做呢?

    首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。

    终端代码执行效果

    看看readme.txt的内容是不是版本add distributed:

    Paste_Image.png

    我们查看文本文件:


    文本内容

    可以发现我们添加的文字已经不见了已经退回之前的版本。

    最新的那个版本已经看不到了!好比你从21世纪坐时光穿梭机来到了19世纪,想再回去已经回不去了,肿么办?

    办法其实还是有的,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到上面那个commit id是9838366...,于是就可以指定回到未来的某个版本:

    版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。

    终端代码执行效果

    再小心翼翼地看看readme.txt的内容:


    Paste_Image.png

    我们再看一下文本内容可以发现,果然,我胡汉三又回来了。

    文本内容

    现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?

    在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到旧版本时,再想恢复到最新版本,就必须找到最新版本的commit id。Git提供了一个命令git reflog用来记录你的每一次命令:

    终端代码执行效果

    于是乎,我们就可以根据commit的id回到我们想要回到的任何一个版本。

    未完待续详情,请看下篇git 的使用(二),也可参考一下面的网站。

    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

    相关文章

      网友评论

          本文标题:git 的使用(一)

          本文链接:https://www.haomeiwen.com/subject/zpyjjttx.html