Git之版本控制工具的高级用法

来源:互联网 发布:c语言rinv 编辑:程序博客网 时间:2024/06/08 11:44

通过前面两篇文章的介绍,现在对Git已经不陌生了,通过前两篇文章的学习,已经学习掌握了Git中很多的常用命令。现在打开Git Bash,并进入到项目BaiduMapTest这个项目的根目录,然后执行提交操作:

git init

git add .

git commit -m "First Commit,"

这样的话继续该文的编写准备工作就完成了,下面了解下关于Git的高级用法:


1.分支的概述

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



2.分支的重要性

 通常情况下,只在主干线上进行开发是完全没有问题,不过一旦涉及到出版本的情况,如果不建立分支的话,你就会非常头疼,举例如下:

你们公司研发了一款不错的软件,最近刚刚完成,并推出了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存在了。


3.Git中操作分支

a.创建分支  git branch version1.0

b.查看当前的版本库中有哪些分支   git  branch -a

c.由master分支切换到version1.0分支  git checkout version1.0

需要注意的是,在version1.0分支上修改并提交的代码将不会影响到master分支。同样的道理,在master分支上修改并提交的代码也不会影响到version1.0分支。因此,如果我们在version1.0分支上修复了一个bug,在master分支上这个bug仍然是存在的。这时将使用merge命令来完成合并操作:

git checkout master

git merge version1.0

以上两行命令就可以把在version1.0分支上修复并提交的内容合并到master分支上,当然,在合并分支的时候如果出现了代码冲突的情况,这个时候你就需要静下心来慢慢找出并解决这些冲突,GIt在这里无法帮助你了。

d.删除分支  git branch -D  version1.0


4.与远程版本库协作

现有一个远程版本库的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的语法规则和pull是差不多的,

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教程

  http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137628548491051ccfaef0ccb470894c858999603fedf000

0 0