Git从入门到速成

什么是Git

Git是Linux发明者Linus开发的一款新时代的版本控制系统,那什么是版本控制系统呢?怎么理解?网上一大堆详细的介绍,可是大多枯燥乏味,对于新手也很难理解,这里我只举几个例子。git

熟悉编程的都知道,咱们在软件开发中源代码实际上是最重要的,那么对源代码的管理变得异常重要:编程

  • 为了防止代码的丢失,确定本地机器与远程服务器都要存放一份,并且还须要有一套机制让本地能够跟远程同步;
  • 咱们开发的时候免不了有bug,有时候刚发布的功能就出现了严重的bug,这个时候须要对代码进行还原;
  • 随着咱们版本迭代的功能愈来愈多,可是咱们须要清除的知道历史每个版本的代码更改记录,甚至知道每一个人历史提交代码的状况

等等相似以上的状况,这些都是版本控制系统能解决的问题。因此说,版本控制是一种记录一个或者若干个文件内容变换,以便未来查阅特定版本修改状况的系统,对于软件开发领域来讲版本控制是最重要的一个环节,而Git是当下比较流行、好用的版本控制系统。缓存

Git安装

上面说了,Git是一个版本控制系统,你也能够理解成一个工具,跟Java相似,使用以前必须得先安装,因此第一步必需要安装,因为我用的是Mac,Mac上系统自带Git。因此安装这一步骤就省略,相信你们能够搞的定。服务器

如何学习Git

安装好Git以后,怎么学习是个问题,其实关于Git有不少图形化的软件,可是我强烈建议你们从命令行开始学习理解,我知道没有接触过命令行的同窗心里多是拒绝的,可是个人亲身实践证实,只有一开始学习命令行,以后你对Git的每一步操做才能理解其意义,而等你熟练以后 ,你想用任何的图形化的软件去操做彻底没有问题。工具

Git命令列表

怎么判断你Git有没有安装成功呢?请在命令行里输入git,若是出现如下提示证实你已经安装成功了。学习

如图

Git全部的操做命令都是以git开头,上面列举了最经常使用的一些Git命令,紧接着会有一句引文解释这个命令的意思,都不是很难理解的单词,不妨试着看一下,不过没有实际操做你仍然很差理解,下面咱们来以一个实际的操做来介绍下一些经常使用的命令的含义。测试

Git具体命令

第一步:咱们先新建一个文件夹,在文件夹里新建一个文件(ps:我是用命令行去新建的)命令行

  • 新建文件夹:mkdir test版本控制

  • 跳转到文件夹目录:cd testcode

  • 新建test.md文件: touch test.md

提醒:在进行任何Git操做以前,都要先切换到Git仓库目录,也就是要先切换到项目的文件夹目录下

这个时候咱们先随便操做一个命令,好比git status,能够看到以下提示:
如图

意思就是当前目录还不是一个Git仓库。

git init

这个时候用到了第一个命令,表明初始化git仓库,输入git init以后会提示:
如图

能够看到初始化成功了,至此test目录已是一个git仓库了。

git status

紧接着咱们输入git status命令,会有以下提示:
如图

默认就直接在master分支,关于分支的概念后面会提,这时最主要的是提示test.md这个文件
Untracked files就是说test.md这个文件尚未被跟踪,尚未提交在git仓库里呢,并且提示你能够用git add去操做你想要提交的文件。

git status这个命令就是查看状态,这个命令能够算是使用最频繁的了,建议你们没事就输入这个命令来查看你当前git仓库的一些状态。

git add

上面提示test.md文件尚未提交到git仓库里,这个时候咱们能够随便编辑下test.md文件,而后输入git add test.md,而后再输入git status
如图

此时提示如下文件 Changes to be committed,意思就是test.md文件等待被提交,固然你也可使用 git rm -cached这个命令去移除这个缓存。

git commit

接着,咱们输入 git commit -m "first commit",这个命令是什么意思呢?commit是提交的意思,-m 表明提交信息,执行了以上命令表明咱们已经正式进行了第一次提交。这个时候再输入 git status ,会提示 nothing to commit
图6

git log

这个时候,咱们输入 git log命令,就会看到以下:
图7

git log这个命令能够查看全部commit产生的记录,因此能够看到已经产生了一条commit记录,而提交时候的附带信息叫 “first commit”

git add & git commit

看到这里估计不少人都会有疑问,我想要提交直接进行commit不就好了么为何须要先add一次呢?首先 git add 是把改动添加到一个暂存区,你能够理解成一个缓存区域,临时保存你的改动,而 git commit 才是最后真正的提交,固然也有办法把这两步合并成一步,不事后面再介绍,建议新手先循序渐进的一步步来。

git branch

branch即分支的意思,分支的概念很重要,尤为是团队协做的时候,假设两我的都作同一个项目,这个时候分支就是保证两人能协同合做的最大力气了。

举个🌰:A、B两人都在作同一个项目,可是不一样的模块,这个时候A新建了一个分支叫a,B新建了一个分支叫b,这样A、B作的全部代码改动都在各自的分支,互不影响,等到两人都把各自的模块都作完了,最后再统一把分支合并起来。

执行 git init初始化git仓库以后会默认生成一个主分支master,也是你所在的默认分支,也基本是实际开发正式环境下的分支,通常状况下master分支不会轻易直接在上面操做的,大家能够输入git branch查看下当前分支状况;若是咱们想在此基础上新建一个分支呢,很简单,执行 git branch a就新建了一个名字叫a的分支,这时候分支a跟分支master是如出一辙的内容,咱们再输入git branch 查看当前的分支状况;

可是能够看到master分支前有个 * 号,(注意: * 所指的分支表明当前所在的分支) 即虽然新建了一个 a 的分支,可是当前所在的分支仍是在master上,若是咱们想在 a 分支上进行开发,首先要先切换到 a 分支上才行,因此下一步要切换分支。git checkout a
执行这个命令,而后再输入git branch查看分支状况,能够看到当前咱们所在的分支已是a了,这个时候,A同窗就能够在他新建的a分支进行写代码了。
那就有人说了,我要先新建再切换,未免有点麻烦,有没有一步到位的,答案是确定的:
git checkout -b a这个命令表明的意思就是新建一个a分支,而且自动切换到a分支

git merge

A同窗在a分支上代码写完了,而且测试也OK了,准备要上线了,这个时候就须要把他的代码合并到分支master上,而后发布。git merge就是合并分支用到的命令,这对这个状况,须要先作两步:

  • 第一步是切换到master分支,若是你已经在那就不用切换了
  • 第二步执行git merge a,意思就是把 a 分支的代码合并过来,不出意外,这个时候 a 分支的代码就顺利合并到master分支来了,为何说不出意外呢?由于这个时候可能由于产生冲突而致使合并失败。

git branch -d

有新建分支,那确定就有删除分支,加入这个分支新建错了,或者a分支的代码已经顺利合并到master分支来了,那么a分支没用了,须要删除,这个时候执行代码 git branch -d a
就能够把a分支删除了。

git branch -D

有些时候可能会删除失败,好比若是a分支的代码尚未合并到master分支,你执行 git branch -d a是删除不了的,它会智能的提示你a分支还有未合并的代码,可是若是你非要删除,那就执行 git branch -D a就能够强制删除a分支了。

git tag

咱们在客户端开发的时候常常有版本的概念,好比v1.0、v1.1之类的,不一样的版本确定对应不一样的代码,因此咱们通常要给咱们的代码加上标签,这样假设v1.1版本出了一个新bug,可是又不知道v1.0是否是有这个bug,有了标签就能够顺利切换到v1.0的代码,从新打个包测试就知道了。
因此若是想要新建一个标签很简单,好比 git tag v1.0就表明我在当前代码状态下新建了一个v1.0的标签,输入 git tag能够查看历史tag记录。

想要切换到某个tag怎么办?
也很简单,执行 git checkout v1.0这样就顺利的切换到v1.0 tag的代码状态了。

结束语

OK,以上全是一些最基本的git操做,并且全是在本地环境进行操做的,彻底没有涉及到远程仓库。毕竟这篇文章是针对小白的,大神能够忽略。

附上一张git操做的图
图8

相关文章
相关标签/搜索