admin 发表于 2017-10-2 07:24:22

从0开始学习 GitHub 系列之「Git速成」


从0起头进修 GitHub 系列之「Git速成」

data/attachment/forum/img/171101p2ioz2oirv1rz7vz.jpg


阅读本文大要需要 6 分钟。
前面的 GitHub 系列文章先容过,GitHub 是基于 Git 的,所以也就意味着 Git 是根本,假如你不会 Git ,那末接下来你完全继续不下去,所以明天的教程就来说说 Git ,固然关于 Git 的常识单凭一篇文章必定说不完的,我这篇文章先先容一些最根基的、最常用的一些 Git 常识,争取让你们 Git 速成。
1什么是Git?Git 是 Linux 发现者 Linus 开辟的一款新时代的版本控制系统,那什么是版本控制系统呢?怎样了解?网上一大堆具体的先容,可是大多死板有趣,对于新手也很难了解,这里我只举几个例子来帮助你们了解。
熟悉编程的晓得,我们在软件开辟中源代码实在是最重要的,那末对源代码的治理变得异常重要:
比如为了避免代码的丧失,必定当地机械与远程办事器都要寄存一份,而且还需要有一套机制让当地可以跟远程同步;
又比如我们经常是好几小我做同一个项目,都要对一份代码做变动,这个时辰需要大师互不影响,又需要各自可以同步他人的代码;
又比如我们开辟的时辰免不了有bug,偶然辰刚公布的功用就出现了严重的bug,这个时辰需要告急对代码停止复原;
又比如随着我们版本迭代的功用越来越多,可是我们需要清楚的晓得历史每一个版本的代码变动记录,甚至晓得每小我历史提交接码的情况;
等等等类似以上的情况,这些都是版本控制系统能处理的题目。所以说,版本控制是一种记录一个或多少文件内容变化,以便未来查阅特定版本订正情况的系统,对于软件开辟范畴来说版本控制是最重要的一环,而 Git 毫无疑问是当下最风行、最好用的版本控制系统。
2Git 安装上面说了,Git 是一个版本控制系统,你也可以了解成是一个工具,跟 Java 类似,利用之前必须得先下载安装,所以第一步必必要安装,我用的是 Mac , Mac 上实在系统自带 Git 的,不外这里同一供给一下各平台的安装方式,这部分就不外多先容,相信大师这里搞的定。
Mac:https://sourceforge.net/projects/git-osx-installer/
Windows:https://git-for-windows.github.io/
Linux:apt-get install git
3若何进修 Git ?安装好 Git 以后,怎样进修是个题目,实在关于 Git 有很多图形化的软件可以操纵,可是我激烈倡议大师从号令行起头进修了解,我晓得没打仗过号令行的人能够会很抵牾,可是我的亲身理论证实,只要一路头进修号令行,以后你对 Git 的每一步操纵才能了解其意义,而等你熟练以后你想用任何的图形化的软件去操纵完全没题目。
我一路头教我们团队成员满是基于号令行的,事后证实他们现在已经深深爱上号令行没法自拔,他们很了解 Git 每一步操纵的具体寄义,以致于在现实项目很少出错,所以我这里也是基于号令行去教你们进修了解。
4Git 号令列表怎样判定你 Git 有没有安装成功?请在号令行里输入 git ,假如出现以下提醒证实你已经安装成功了。


data/attachment/forum/img/171102ggznbp2o1bbf52bo.jpg


Git 一切的操纵号令开都城要以 git 开首,上面罗列了最常用的一些 Git 号令,紧接着会有一句英文诠释这个号令的意义,都不是很难的单词,无妨试着看一下,不外没有现实操纵你仍然欠好了解,下面我们来以一个现实的操纵来先容下一些常用号令的寄义。
5Git 具体号令第一步,我们先新建一个文件夹,在文件夹里新建一个文件(我是用 Linux 号令去新建的,Windows用户可以自己手动新建)
mkdir test (建立文件夹test)
cd test (切换到test目录)
touch a.md (新建a.md文件)
这里提醒下:在停止任何 Git 操纵之前,都要先切换到 Git 仓库目录,也就是先要先切换到项目标文件夹目录下。
这个时辰我们先随意操纵一个号令,比如 git status ,可以看到以下提醒(别纠结色彩之类的,设置与主题纷歧样而已):


data/attachment/forum/img/095915bnsdtdt6hmtf9htn.jpg


意义就是当前目录还不是一个 Git 仓库。
git init
这个时辰用到了第一个号令,代表初始化 git 仓库,输入 git init 以后会提醒:


data/attachment/forum/img/095915d21kxa9kw1w371wm.jpg


可以看到初始化成了,至此 test 目录已经是一个 git 仓库了。
git status
紧接着我们输入 git status 号令,会有以下提醒:


data/attachment/forum/img/065119rd3ambgno3gzpg0o.jpg


默许就间接在 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 :


data/attachment/forum/img/065119kkhdhkz2nsfi4d9d.jpg


此时提醒以下文件 Changes to be committed , 意义就是 a.md 文件期待被提交,固然你可以利用 git rm --cached 这个号令去移除这个缓存。
git commit
接着我们输入 git commit -m 'first commit' ,这个号令什么意义呢?commit是提交的意义,-m 代表是提交信息,履行了以上号令代表我们已经正式停止了第一次提交。
这个时辰再输入 git status ,会提醒 nothing to commit。
git log
这个时辰我们输入 git log 号令,会看到以下:


data/attachment/forum/img/191134dcpo1u25pbm2pypz.jpg


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 检察下当前分支情况:


data/attachment/forum/img/191134cx72qyuob7eu41ye.jpg


假如我们想在此根本上新建一个分支呢,很简单,履行 git branch a 就新建了一个名字叫 a 的分支,这时辰分支 a 跟分支 master 是如出一辙的内容,我们再输入 git branch 检察确当前分支情况:


data/attachment/forum/img/114242rkgvklygxgzxy6vw.jpg


可是可以看到 master 分支前有个 * 号,即虽然新建了一个 a 的分支,可是当前地点的分支还是在 master 上,假如我们想在 a 分支上停止开辟,首先要先切换到 a 分支上才行,所以下一步要切换分支
git checkout a
履行这个号令,然后再输入 git branch 检察下分支情况:


data/attachment/forum/img/114242j6ainpqiq6r232iq.jpg


可以看到当前我们在的分支已经是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 记录。


data/attachment/forum/img/114242yuuwiktkuqwhssvm.jpg


可以看到我新建了两个标签 v1.0、v1.1。
想要切换到某个tag怎样办?也很简单,履行 git checkout v1.0 ,这样就顺遂的切换到 v1.0 tag的代码状态了。
OK,以上满是一些最根基的Git操纵,而且满是在当地情况停止操纵的,完全没有触及到远程仓库,下一章节将以远程 GitHub 仓库为例,讲授下当地若何跟远程仓库一路同步合作,别的明天讲的满是最根本最简单的Git操纵,一步步来,后续再继续讲授一下Git的高阶以及一些Git的酷炫操纵。
文章作者:stormzhang
页: [1]
查看完整版本: 从0开始学习 GitHub 系列之「Git速成」