从0开始学习GitHup系列(三)

Git 速成

 

前面的 GitHub 系列文章介绍过,GitHub 是基于 Git 的,所以也就意味着 Git 是基础,如果你

不会 Git ,那么接下来你完全继续不下去,所以今天的教程就来说说 Git 当然关于 Git 的知

识单凭一篇文章肯定说不完的,我这篇文章先介绍一些最基本的、最常用的一些 Git 知识,争

取让你们 Git 速成。

 

1. 什么是Git

 

Git  Linux 发明者 Linus 开发的一款新时代的版本控制系统,那什么是版本控制系统呢?怎

么理解?网上一大堆详细的介绍,但是大多枯燥乏味,对于新手也很难理解,这里我只举几

个例子来帮助你们理解。

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

重要:

比如为了防止代码的丢失,肯定本地机器与远程服务器都要存放一份,而且还需要有一套机

制让本地可以跟远程同步;

又比如我们经常是好几个人做同一个项目,都要对一份代码做更改,这个时候需要大家互不

影响,又需要各自可以同步别人的代码;

又比如我们开发的时候免不了有bug,有时候刚发布的功能就出现了严重的bug,这个时候需

要紧急对代码进行还原;

又比如随着我们版本迭代的功能越来越多,但是我们需要清楚的知道历史每一个版本的代码

更改记录,甚至知道每个人历史提交代码的情况;

等等等类似以上的情况,这些都是版本控制系统能解决的问题。所以说,版本控制是一种记

录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统,对于软件开发领域来

说版本控制是最重要的一环,而 Git 毫无疑问是当下最流行、最好用的版本控制系统。

 

2. Git 安装

 

上面说了,Git 是一个版本控制系统,你也可以理解成是一个工具,跟 Java 类似,使用之前

必须得先下载安装,所以第一步必须要安装,我用的是 Mac  Mac 上其实系统自带 Git 的,

不过这里统一提供一下各平台的安装方式,这部分就不过多介绍,相信大家这里搞的定。

 

Machttps://sourceforge.net/projects/git-osx-installer/

 

Windowshttps://git-for-windows.github.io/

 

Linuxapt-get install git

 

3. 如何学习 Git 

 

安装好 Git 之后,怎么学习是个问题,其实关于 Git 有很多图形化的软件可以操作,但是我强

烈建议大家从命令行开始学习理解,我知道没接触过命令行的人可能会很抵触,但是我的亲

身实践证明,只有一开始学习命令行,之后你对 Git 的每一步操作才能理解其意义,而等你熟

练之后你想用任何的图形化的软件去操作完全没问题。

我一开始教我们团队成员全是基于命令行的,事后证明他们现在已经深深爱上命令行无法自

拔,他们很理解 Git 每一步操作的具体含义,以致于在实际项目很少犯错,所以我这里也是基

于命令行去教你们学习理解。

 

4. Git 命令列表

 

怎么判断你 Git 有没有安装成功?请在命令行里输入 git ,如果出现以下提示证明你已经安装

成功了。

Git 所有的操作命令开头都要以 git 开头,上面列举了最常用的一些 Git 命令,紧接着会有一

句英文解释这个命令的意义,都不是很难的单词,不妨试着看一下,不过没有实际操作你仍

然不好理解,下面我们来以一个实际的操作来介绍下一些常用命令的含义。

 

 

5. Git 具体命令

 

第一步,我们先新建一个文件夹,在文件夹里新建一个文件(我是用 Linux 命令去新建的,

Windows用户可以自己手动新建)

 

mkdir test    (创建文件夹test)

cd test    (切换到test目录)

touch a.md    (新建a.md文件)

 

这里提醒下:在进行任何 Git 操作之前,都要先切换到 Git 仓库目录,也就是先要先切换到项

目的文件夹目录下。

 

这个时候我们先随便操作一个命令,比如 git status ,可以看到如下提示(别纠结颜色之类

的,配置与主题不一样而已):

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

 

git init

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

可以看到初始化成了,至此 test 目录已经是一个 git 仓库了。

 

git status

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

默认就直接在 master 分支,关于分支的概念后面会提,这时最主要的是提示 a.md 文件

Untracked files ,就是说 a.md 这个文件还没有被跟踪,还没有提交在 git 仓库里呢,而且提

示你可以使用 git add 去操作你想要提交的文件。

git status 这个命令顾名思义就是查看状态,这个命令可以算是使用最频繁的一个命令了,建

议大家没事就输入下这个命令,来查看你当前 git 仓库的一些状态。

 

git add

上面提示 a.md 文件还没有提交到 git 仓库里,这个时候我们可以随便编辑下 a.md 文件,然

后输入 git add a.md ,然后再输入 git status :

此时提示以下文件 Changes to be committed , 意思就是 a.md 文件等待被提交,当然你可

以使用 git rm --cached 这个命令去移除这个缓存。

 

git commit

接着我们输入 git commit -m 'first commit' ,这个命令什么意思呢? commit 是提交的意思,-

代表是提交信息,执行了以上命令代表我们已经正式进行了第一次提交。

这个时候再输入 git status ,会提示 nothing to commit

 

git log

这个时候我们输入 git log 命令,会看到如下:

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,这样

AB做的所有代码改动都各自在各自的分支,互不影响,等到俩人都把各自的模块都做完

了,最后再统一把分支合并起来。

 

执行 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分支还有未合并的代码,但是如果你非要删除,那就执

 git branch -D a 就可以强制删除a分支。

 

git tag

我们在客户端开发的时候经常有版本的概念,比如v1.0v1.1之类的,不同的版本肯定对应不

同的代码,所以我一般要给我们的代码加上标签,这样假设v1.1版本出了一个新bug,但是又

不晓得v1.0是不是有这个bug,有了标签就可以顺利切换到v1.0的代码,重新打个包测试了。

所以如果想要新建一个标签很简单,比如 git tag v1.0 就代表我在当前代码状态下新建了一个

v1.0的标签,输入 git tag 可以查看历史 tag 记录。

可以看到我新建了两个标签 v1.0v1.1

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

tag的代码状态了。

 

OK,以上全是一些最基本的Git操作,而且全是在本地环境进行操作的,完全没有涉及到远程

仓库,下一章节将以远程 GitHub 仓库为例,讲解下本地如何跟远程仓库一起同步协作,另外

今天讲的全是最基础最简单的Git操作,一步步来,后续再继续讲解一下Git的高阶以及一些Git

的酷炫操作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值