Git分支

245 阅读4分钟

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]