git 的使用(一)

一、第一步打开终端输入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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容