文章目录
  1. 1. Git的诞生
  2. 2. 基础入门使用
    1. 2.1. 仓库
    2. 2.2. 第一步:创建仓库
    3. 2.3. 第二步:初始化仓库
    4. 2.4. 第三步:把文件添加到仓库
    5. 2.5. 第四步:把文件提交到本地仓库
    6. 2.6. 第五步:把文件提交到远程仓库
  3. 3. Git分支管理

Git的诞生

学习一个东西,还是先从它的历史背景开始,可以加深一些文化背景和印象。Git是一个分散式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创作,于2005年以GPL释出。最初目的是为更好地管理Linux内核开发而设计。不得不说下林纳斯·托瓦兹(Linux 之父)这个天才,原本Linux内核主要的版本控制系统是使用BitKeeper来维护代码。最终因为版权问题,BitKeeper的作者收回无偿使用的授权,协商未果的情况下,林纳斯·托瓦兹决定自己开发一套版本控制系统来代替BitKeeper,以十天的时间,编写出第一个git版本。天才都是任性的,你不给我用,我自己做一个。

基础入门使用

这里就不讲Git的安装了,先说下使用的方式,可以通过命令行的方式来操作Git,当然有的小伙伴如果没有编程基础,可以尝试使用客户端来使用也非常方便实用。推荐用的比较多的是SourceTree但是它最大的问题就是账号如果是谷歌的,很有可能被墙。

仓库

在使用的过程中我们需要注意一下基础的概念,每次操作的时候我们都是在一个仓库上面进行操作,或者说是版本库(Repository)。可以把它理解成一个文件夹的路径,这个文件内保存着所有你的代码或者文件,同时通过我们git的一些命令可以实现文件版本控制的功能。每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以找到并且回退。

第一步:创建仓库

选择一个你喜欢的路径,创建一个空的文件夹目录:

1
2
$ mkdir MyFristRepository
$ cd MyFristRepository

第二步:初始化仓库

在第一步完成以后,通过git init命令把这个目录变成Git可以管理的仓库:

1
2
$ git init
Initialized empty Git repository in /Users/chausson/Documents/Blog/MyFristRepository/.git/

当然这只是在你本地电脑创建了这个仓库,通常我们会去初始化一个远程的仓库,这样才能协作开发
如下是对一个远程http仓库的Clone,就是先将远端仓库的内容下载到你本地,当然也可以使用ssh方式访问。

1
$ git clone  http://gitlab.sudaotech.com/auto2/erp-web.git

当你完成第一步的时候,你可以发现在你刚刚的空目录下有一个.git的目录,这个目录是Git来跟踪管理版本库的.如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见

第三步:把文件添加到仓库

Git是一个非常强大好用的工具,它不止是代码版本管理系统,也是所有文件版本管理系统。对于文本文件它会跟踪其中内容的变更,版本控制系统可以告诉你每次的改动。在当前的仓库目录下,添加你所需要管理的文件

1
$ git add file.jpeg

如果你执行了该命令没有反应,不要担心,说明你已经成功了。因为这里没有消息就是好消息。

第四步:把文件提交到本地仓库

这里你会发现,不是打错了,第三步和第四步是两个流程,这一步是真正把文件提交到仓库,而上一步是将文件添加到仓库的暂存区,其中的区别稍后会解释。

1
$ git commit -m "First Commit"

这里为什么需要分两步去做呢,其实在做add命令的时候我们只是先把文件放入暂存区,commit要做的事情就是将所有暂存区的内容提交到仓库中。因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

1
2
3
$ git add file.jpeg
$ git add time.png
$ git commit -m "add 2 files."

比如我们要寄送一份快递文件,所有的快递都会先通过快递员收取,然后快递员统一去寄送到公司仓库运送到各个省市。当然暂存区是Git非常重要的概念,弄明白了暂存区,就弄明白了Git的很多操作到底干了什么。

第五步:把文件提交到远程仓库

之前的操作只是我们把文件提交到本地的仓库,最后我们要做的就是把本地电脑中的文件提交到远程服务器,提供给其他人展示下载。在我们当前仓库的目录下添加远端仓库的依赖关系:

1
2
$ git remote add chausson http://gitlab.sudaotech.com/chausson/git-example.git
$ git push -u chausson master

把本地库的内容推送到远程仓库,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

Git分支管理

每次提交Git会把当前分支串成一条时间线,这条时间线也就是一个分支,每个仓库都会有一条主线,一般我们叫做主干即master分支。在最初的时候master一般是一条直线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:

每次提交都会生成一个新的结点,随着你的提交次数,结点的个数也一直在增加。master既然作为主干,应该是要保持稳定的,仅仅是用来构建,或者打包版本使用,该分支不能用来开发。
所以我们必须新建一个dev的分支,在上面进行开发和提交,最终完成后合并到master,每个开发建立自己的分支,开发完以后合并到dev上就可以。