现在的你对于 Git 应该完全不会感到陌生了吧,通过之前两节内容的学习,你已经掌握了很多 Git 中常用的命令,像提交代码这种简单的操作相信肯定是难不倒你的。
那么打开 Git Bash
,在指定目录创建项目的跟目录,然后执行提交操作:
git init
git add .
git commit -m "First Commit."
这样就将准备工作完成了,下面就让我们开始学习关于 Git
的高级用法。
分支的用法
分支是版本控制工具中比较高级且比较重要的一概念,它主要的作用就是在现有代码的基础上开辟一个分叉口,使得代码可以在主干线和分支线上同时进行开发,且相互之间不会影响。
你也许会有疑惑,为什么需要建立分支呢?只在主干线上进行开发不是挺好的吗?没错,通常情况下,只在主干线上进行开发是完全没有问题的, 不过一旦涉及版本的情况,如果不建立分支的话,你就会非常的头疼。
举个例子吧比如说你们公司研发了一款不错的软件,最近刚刚完成,并推出了1.0
版本。但是领导是不会让你们闲着的,马上提出了新的需求,让你们投入到了1.1
版本的开发工作当中。过了几个星期,1.1
版本的功能已经完成了一半,但是这个时候用户反馈,之前上线的1.0
版本发现了几个重大的bug,严重影响软件的正常的正常使用。领导也相当重视这个问题,要求你们立刻修复这些bug,并重新发布1.0
版本,但这个时候你就非常为难了,你会发现根本没法儿去修复这些bug。因为现在1.1
版本已经开发到一半了,如果在现有的代码的基础上修复这些bug,那么更新的1.0
版本将会带有一半1.1
版本的功能!
进退两难了是不是?但是如果你使用了分支的话,就完全不会存在这个让人头疼的问题。你只需要在发布1.0
版本的时候建立一个分支,然后在主线上继续开发1.1
版本的功能。当1.0
版本上发现任何bug的时候,就在分支上进行修改,然后发布新的1.0
版本,并记得将修改后的代码合并到主干线上。这样的话,不仅可以轻松解决掉1.0
版本存在的bug,而且保证了主干线上的代码也已经修复了这些bug,当1.1
版本发布的时候就不会有同样的bug存在了。
说了这么多,相信你也已经意识到分支的重要性了,那么我们马上来学习一下如何在Git
中操作分支吧。
分支的英文名是branch
,如果想要查看当前的版本库当中有哪些分支,可以使用git branch
这个命令。
创建一个分支:
git branch version1.0
这样就创建了一个名为version1.0
的分支,我们可以再次输入git branch
这个命令来检查一下。
切换分支:
git checkout version1.0
这样我们就可以把代码成功切换到version1.0
这个分支上了。
需要注意的是,在version1.0
分支上修改并提交的代码将不会影响到master
分支。同样的道理,在master
分支上修改并提交的代码也不会影响到version1.0
分支。因此如果我们在version1.0
分支上修复了一个bug,在master
分支上这个bug仍然是存在的。这时将修改的代码一行行赋值到master
分支显然不是一种聪明的做法,最好的办法就是使用merge
命令来完成合并操作:
git checkout master
git merge version1.0
仅仅这样简单的两行命令,就可以把在version1.0
分支上修改并提交的内容合并到master
分支上了。当然,在合并分支的时候还有可能出现代码冲突的情况,这个时候你就需要静下心来慢慢找出并解决这些冲突,Git
在这里就无法帮助你了。
最后,当我们不再需要version1.0
这个分支的时候,可以使用如下命令将这个分支删除掉:
git branch -D version1.0
与远程版本库协作
可以这样说,如果你是一个人在开发,那么使用版本控制工具救援预案无法发挥出它真正强大的功能。没错,所有版本控制工具最重要的一个特点就是可以使用它来进行团队合作开发。每个人的电脑上都会有一份代码,当团队的某个成员在自己的电脑上编写完成了某个功能之后,就将代码提交到服务器,其他的成员只需要将服务器上的代码同步到本地,就能保证整个团队所有人的代码都相同。这样的话,每个团队成员就可以各司其职,大家共同来完成一个较为庞大的项目。
那么如何使用Git
来进行团队合作开发呢?这就需要有一个远程的版本库,团队的每个成员都从这个版本库中获取到最原始代码,然后各自进行开发,并且以后每次提交的代码都同步到远程版本库上就可以了。另外,团队中的每个成员最好都要养成经常从版本库中获取最新代码的习惯,不然的话,大家的代码就很有可能经常出现冲突。
比如说现在有一个远程版本库的Git地址是https://github.com/example/test.git
,就可以使用如下的命令将代码下载到本地:
git clone https://github.com/example/test.git
之后你在这份代码的基础上进行了一些修改和提交,那么怎样才能把本地修改的内容同步到远程版本库上呢?这就需要借助push
命令来完成了,用法如下:
git push origin master
其中origin
部分指定的是远程版本库的Git
地址,master
部分指定的是同步到哪一个分支上,上述命令就完成了将本地代码同步到https://github.com/example/test.git
这个版本库的master
分支上的功能。
知道了将本地的修改同步到远程版本库上的方法,接下来我们看一下如何将远程版本库上的修改同步到本地。Git
提供了两种命令来完成此功能,分别是fetch
和pull
,fetch
的语法规则和push
是差不多的,如下:
git fetch origin master
执行这个命令后,就会将远程本本库上的代码同步到本地,不过同步下来的代码并不会合并到任何分支上去,而是会存放在一个origin/master
分支上,这是我们就可以通过diff
命令来查看远程版本库上到底修改了哪些东西:
git diff origin/master
之后再调用merge
命令将origin/master
分支上的修改合并到主分支上即可,如下所示:
git merge origin/master
而pull
命令则是相当于将fetch
和merge
这两个命令放在一起执行了,它可以从远程版本库上获取最新的代码并合并到本地,用法如下:
git pull origin master
注:Git快速入门
系列文章大部分内容整理自“郭霖”大神的《第一行代码》内容,记录在此仅做备忘笔记及交流使用,切勿用于商业用途