12.9--Git 时间:版本控制工具的高级用法

现在你对于Git 应该完全不会感到陌生了吧?通过之前两次Git 时间的学习,你已经掌握了很多Git 中常用的命令,像提交代码这种简单的操作相信肯定是难不倒你的。

打开终端界面,进入MaterialTest 这个项目的根目录,然后执行提交操作:

git init 

git add .

git commit -m "Frist Commit"

 

12.9.1 分支的用法

分支是版本控制工具中比较高级且比较重要的一个概念,它主要的作用就是在现有代码的基础上开辟一个分叉口,使得代码可以在主干线和分支线上同时进行开发,且互相之间不会影响。分支的工作原理如图:

你也许会有疑惑,为什么需要建立分支呢?只在主干线上进行开发不是挺好吗?没错,通常情况下,只在主干线上进行开发是完全没有问题的。不过,一旦涉及发布版本的情况,如果不建立分支的话,你就会非常地头疼。距个简单的例子吧,比如说你们公司研发了一款不错的软件,最近刚刚完成,并推出了1.0 版本。但是领导是不会让你们闲着的,马上提出了新的需求,让你们投入到1.1 版本的开发工作当中。过了几个星期,1.1 版本的功能已经完成了一半,但是这个时候突然有用户反馈,之前上限的1.0版本发现了几个重大的bug ,严重影响软件的正常使用。领导也相当重视这个问题,要求你们立刻修复这些bug,并对1.0 版本进行更新,但这个时候你就非常为难了,你会发现根本没法去修复,因为现在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 这个命令,结果如图所示:

由于目前MaterialTest 项目中还没有创建过任何分支,因此只有一个master 分支存在,这也就是前面所说的主干线。接下来我们尝试创建一个分支,命令如下:

git branch version1.0

这样就创建了一个名为version1.0 的分支,我们再次输入git branch 这个命令来检查一下,结果如图:

可以看到,果然有一个叫做version1.0 的分支出现了。你会发现,master 分支的前面有一个 ”*“ 号,说明目前我们的代码还是在master 分支上,那么怎样才能切换到version1.0 这个分支上呢?其实也很简单,只需要使用checkout 命令即可,如下所示:

git checkout version1.0

再次输入 git branch 来进行检查,结果如图:

可以看到,我们已经把代码成功切换到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 这个分支的时候,可以使用如下命令将这个分支删除(后面的d 大小写都可以):

git branch -D version1.0

 

12.9.2 与远程版本库协作

可以这样说,如果你是一个人在开发,那么使用版本库控制工具就远远无法发挥它真正强大的功能。没错,所有版本控制工具最重要的一个特点就是可以使用它来进行团队合作开发。每个人的电脑上都会有一份代码,当团队的某个成员在自己的电脑上编写完成了某个功能后,就将代码提交到服务器,其他的成员需要将服务器上的代码同步到本地,就能保证整个团队所有人的代码都相同。这样的话,每个团队成员就可以各持其职,大家共同来完成一个较为庞大的项目。

那么如何使用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 提供了两种命令来完成此功能,分别是fetchpull  。fetch  的语法规则和 push  是差不多的,如下所示:

git fetch origin master

执行完这个命令后,就会将远程版本库上的代码同步到本地。不过同步下来的代码并不会合并到任何分支上,而是会存放到一个origin/master 分支上,这时我们可以通过diff 命令来查看远程版本库长到底修改了哪些东西:

git diff origin/master 

之后再调用merge 命令将origin/master 分支上的修改合并到分支上即可,如下所示:

git merge origin/master 

pull 命令则是相当于将fetchmerge 这两个命令放在一起执行了,它可以从远程版本库上获取最新的代码并且合并到本地,用法如下所示:

git pull origin master

也许你现在对远程版本库的使用还是感觉比较抽象,没关系,因为暂时我们只是了解一下命令的用法,还没进行实战,在第15章当中,你将会对远程版本库的用法有更深一层的认识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值