git内容整理--版本控制工具的高级用法

来源:互联网 发布:韩剧网软件下载 编辑:程序博客网 时间:2024/06/14 23:05

所述流程内容均摘抄于《第一行代码》,另附部分实践中心得体会

通过了之前两节内容的学习,你已经掌握了Git中很多的常用命令,像提交代码这种简单的操作相信肯定是难不倒你的。
那么打开Git Bash,并进入到BaiduMapTest这个项目的根目录,然后执行提交操作:

git initgit add .git commit –m "First Commit."

这样就将准备工作完成了,下面就让我们开始学习关于Git的高级用法。
1、分支的用法
分支是版本控制工具中比较高级且比较重要的一个概念,它主要的作用就是在现有代码的基础上开辟一个分叉口,使得代码可以在主干线和分支线上同时进行开发,且相互之间不会影响。分支的工作原理示意图如图所示。
这里写图片描述
你也许会有疑惑,为什么需要建立分支呢,只在主干线上进行开发不是挺好的吗?没错,通常情况下,只在主干线上进行开发是完全没有问题的,不过一旦涉及到出版本的情况,如果不建立分支的话,你就会非常地头疼。举个简单的例子吧,比如说你们公司研发了一款不错的软件,最近刚刚完成,并推出了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 –a这个命令,结果如图所示。
这里写图片描述
由于目前BaiduMapTest项目中还没有创建过任何分支,因此只有一个master分支存在,这也就是前面所说的主干线。接下来我们尝试去创建一个分支,命令如下:

git branch version1.0

这样就创建了一个名为version1.0的分支,我们再次输入git branch –a这个命令来检查一下,结果如图所示。
这里写图片描述
可以看到,果然有一个叫作version1.0的分支出现了。你会发现,master分支的前面有一个*号,说明目前我们的代码还是在master分支上的,那么怎样才能切换到version1.0这个分支上呢?其实也很简单,只需要使用checkout命令即可,如下所示:
git checkout version1.0
再次输入git branch –a来进行检查,结果如图所示。
这里写图片描述
可以看到,我们已经把代码成功切换到version1.0这个分支上了。
需要注意的是,在version1.0分支上修改并提交的代码将不会影响到master分支。同样的道理,在master分支上修改并提交的代码也不会影响到version1.0分支。因此,如果我们在version1.0分支上修复了一个bug,在master分支上这个bug仍然是存在的。这时将修改的代码一行行复制到master分支上显然不是一种聪明的做法,最好的办法就是使用merge命令来完成合并操作,如下所示:

git checkout mastergit merge version1.0

仅仅这样简单的两行命令,就可以把在version1.0分支上修改并提交的内容合并到master分支上了。当然,在合并分支的时候还有可能出现代码冲突的情况,这个时候你就需要静下心来慢慢地找出并解决这些冲突,Git在这里就无法帮助你了。
最后,当我们不再需要version1.0这个分支的时候,可以使用如下命令将这个分支删除掉:

git branch -D version1.0

2、与远程版本库协作
可以这样说,如果你是一个人在开发,那么使用版本控制工具就远远无法发挥出它真正强大的功能。没错,所有版本控制工具最重要的一个特点就是可以使用它来进行团队合作开发。每个人的电脑上都会有一份代码,当团队的某个成员在自己的电脑上编写完成了某个功能后,就将代码提交到服务器,其他的成员只需要将服务器上的代码同步到本地,就能保证整个团队所有人的代码都相同的。这样的话,每个团队成员就可以各司其职,大家共同来完成一个较为庞大的项目。
那么如何使用Git来进行团队合作开发呢?这就需要有一个远程的版本库,团队的每个成员都从这个版本库中获取到最原始的代码,然后各自进行开发,并且以后每次提交的代码都同步到远程版本库上就可以了。另外,团队中的每个成员最好都要养成经常从版本库中获取最新代码的习惯,不然的话,大家的代码就很有可能经常出现冲突。
比如说现在有一个远程版本库的Git地址是https://github.com/exmaple/test.git,就可以使用如下的命令将代码下载到本地:

git clone https://github.com/exmaple/test.git

之后你在这份代码的基础进行了一些修改和提交,那么怎样才能把本地修改的内容同步到远程版本库上呢?这就需要借助push命令来完成了,用法如下所示:

git push origin master

其中origin部分指定的是远程版本库的Git地址,master部分指定的是同步到哪一个分支上,上述命令就完成了将本地代码同步到https://github.com/exmaple/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
0 0
原创粉丝点击