1.什么是分支
我们可以例举一个简单的例子来说明,比如我们在远程仓库(GitHub)上有一个项目代码,发现其中支付功能代码不完善,只有支付宝支付功能,却没有微信支付的功能。这时我们可能会把源码下载到本地,然后进行添加编写微信支付的功能代码。但在添加修改的过程中,又发现了之前的支付宝支付功能代码存在漏洞,此时第一时间肯定要去修复漏洞。这时我们如何处理当前的所有代码呢?如果我们直接提交到GitHub中,显然会将原来的数据覆盖掉,从而导致源码错乱。
那么我们该如何正确的处理这种情况呢?
这里就需要大家掌握一个分支的概念。对于上述情况,我们可以创建一个新文件夹,将源码从GitHub中下载下来,用于专门修复支付宝支付的漏洞。然后再创建一个分支,用于微信支付功能代码的添加。当我们修复好漏洞后,就可以将修复后代码提交到GitHub上(原始分支上),再单独将另一条分支上的微信支付的代码下载下来进行完善,完善测试好后,就可以与之前分支上的代码进行合并。
总而言之,使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
注:中心库有2个可一直延续的分支:master分支、develop分支
2.分支使用策略
1.
主分支(默认创建的Master分支)只用来发布不同版本的系统,最好以版本号标签区分
开发分支(自己建立Develop分支)这是日常的开发分支,用于把相对完整的代码合并到主分支中
临时性分支,比如功能性分支(feature),预发布分支(release),BUG修改分支(bug)
2.查看分支
查看现有分支命令,我们使用 git branch -a 可以查看现有的所有的分支
3.新建及切换分支
创建分支,我们可以使用git branch 命令创建分支,
但是我们经常会遇到以下的问题:fatal: Not a valid object name: 'master',
产生这个问题是在使用git init命令之后直接创建分支,而主分支master需要commit一次才算真正的创建成功,所以只要commit一次就要可以了。
4.
切换并创建分支,使用checkout命令,加上-b选项,我们可以创建新的分支同时切换到这个新的分支,命令格式为:git checkout -b <分支名称>
5.合并分支
合并分支的流程是:
1).切换到你用来合并其他分支的分支,比如develop
2).使用 git merge <分支名称> 合并其他分支。
3.使用分支的好处
好处一:本地拥有版本库,随时进行版本后退
比如我们在workspace做一个登录注册的功能,可以先把一部分写好的代码commit到本地库Repository,后面再完成另一部分代码后再次commit到Repository,这个时候我们想要回退到前一个代码版本,直接在本地操作即可,待最后功能完成就可以push到远程库Remote,而不会出现别人在svn下载到一份有不完整功能的代码。
好处二:非常简单的建立分支
比如我们针对Android项目研究是否兼容X5,如果在svn我们往往会从服务端update一份新的代码下来本地进行修改研究。而使用Git则可以直接建立一个分支branch,直接在该分支上修改,修改之后commit到该分支的对应本地库的位置,期间还可以切换回主分支进行修改其他代码。
好处三:速度更快,特别是熟悉git命令后
无论是在克隆clone代码还是切换分支、提交修改,这些步骤无论从逻辑机制和速度来说都有了极大的提高,为我们节省了不少宝贵的时间,而不需要SVN漫长的等待。
好处四:指定和若干不同的远端代码仓库进行交互
你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。
4.git的命令
1.显示当前的Git配置
$ git config --list
2.编辑Git配置文件
$ git config -e [--global]
3.设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"
4.添加指定文件到暂存区
$ git add [file1] [file2] ...
5.删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...
6.改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]
7.列出所有本地分支
$ git branch
8.列出所有远程分支
$ git branch -r
9.列出所有本地分支和远程分支
$ git branch -a
10新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
11.新建一个分支,并切换到该分支
$ git checkout -b [branch]
12.新建一个分支,指向指定commit
$ git branch [branch] [commit]
13.新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]
14.切换到指定分支,并更新工作区
$ git checkout [branch-name]
15.建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]
16.合并指定分支到当前分支
$ git merge [branch]