一、Sourcetree简单介绍

通过Git可以进行对项目的版本管理,但是如果直接使用Git的软件会比较麻烦,因为是通过一条一条命令进行操作的。 
 
Sourcetree则可以与Git结合,提供图形界面,使用会方便很多。Git和Sourcetree的安装这里就不多说,网上大把的教程。 

二、分支的创建与合并

1、创建一个远程仓库

在GitHub官网上创建一个新的远程仓库: 

2、用Sourcetree将这个远程仓库clone到本地

复制远成仓库的地址,然后利用改地址将远程仓库clone下来: 

 
这样,在本地就创建好了一个本地仓库MainProject,可以到目标地址去查看一下。

3、准备测试用工程

这里创建一个android工程,不需要写什么代码。将创建好的整个android工程放到本地仓库的文件夹中,然后推送到远程仓库,这样测试用的工程基本准备好了: 

4、创建分支

此时远程仓库中已经有一个项目了,下面模拟一个场景:假设有两个程序猿Allen、Bill同时在开发这个项目,项目经理要求Allen增加一个听歌的功能,要求Bill增加一个游戏的功能,那此时这两人就必须将远程仓库中的项目clone到他两各自的本地(这里就用一台电脑模拟,clone两次创建两个本地仓库): 

clone下来后会有一个默认的分支master,可以理解成主分支,那去进行项目开的话不会直接使用master,会去创建一个新分支进行开发,避免直接使用master改来改去最后一团糟那就该崩溃了。每个人在各自的新分支中开发完成后将新分支合并到主分支中就可以了。 
接下来Allen和Bill各自创建一个新分支:Allen_dev和Bill_dev 

那如果Allen和Bill在开发过程中想看看对方的代码,那就必须将各自创建的新分支推送到远程仓库,然后将对方的分支拉取下来,每次想看的话先获取,然后再拉取最新的代码到本地仓库即可。 

首次拉取别人的分支,在上面的获取之后,按如下操作,这里是Allen获取Bill的分支Bill_dev,Bill获取Allen的步骤一样: 

注意:黑色加粗表示当前所处的分支,可以任意双击切换! 
 

到此,各自的分支已经创建好了,下面Allen和Bill就可以在各自的新分支上进行项目经理安排的任务。

3、分支合并

Allen和Bill打开各自本地仓库中的项目代码进行开发,顺利完成项目经理交代的任务,然后各自的分支推送到远程仓库: 

此时双方可以获取最新代码,拉取最新分支代码,拉取完成后就可以看到对方所增加的内容: 

此时,各自都想将对方的代码整合到自己的项目中,这是就需要分支的合并。例如Allen合并Bill的分支: 

合并完成后,可以看到之前打开的Allen的Android工程,会发现Bill添加的功能已经在Allen的项目中显示出来了。 

最后不要忘了将各自合并后的分支推送。

现在Allen和Bill的工作已经完成了,各自的分支也推送到了远程仓库,此时项目经理就可以clone远程仓库的项目到本地,拉取Allen和Bill的提交的最新分支,将它们合并到主分支master中。这里就拿最开始创建的MianProject看作是项目经理,合并完成并推送。 

3、解决冲突

到目前为止Allen和Bill各自进展顺利,但是假若两人同时在同一个文件进行了操作,那最后合并时就会出现冲突。比如在MainActivity: 

此时当Allen和Bill推送自己的分支到远程仓库后,项目经理MainProject拉取代码进行合并: 
假设首先合并Allen_dev到master没有问题,但是当合并Bill_dev到master时就会提示合并出现了冲突,需要解决。 
 
点击关闭,然后切换到文件状态,找到出现冲突的文件,会有相应的冲突信息: 

有冲突就要解决,右键单击冲突文件,选择解决冲突,这里有两个选项: 
1、使用 我的版本 解决冲突 
2、使用 他人版本 解决冲突 
这里项目经理MainProject首先是将Allen的分支合并到主分支master,那么“我的版本”就是对应的Allen的,“他人版本”对应的就是Bill的。如果首先合并Bill的分支,那么对应关系就要对调一下。总的来说,“我的版本”对应的是首先合并到主分支master的。 
采用一个人的版本,那么在冲突文件中就只会保留该人修改的代码,例如我这里就选择”使用 我的版本 解决冲突“,那么在MainActivity中就只会保留Allen添加的代码。 
 
弹出对话框点击确定。

解决前: 

解决后: 

到这为止基本的分支创建与合并的简单应用,还有合并冲突解决就介绍完了。

原文地址:http://blog.csdn.net/qq_34975710/article/details/74469068

sourcetree创建分支与分支合并的更多相关文章

  1. SVN管理工具Cornerstone之:创建分支、提交合并

      创建工程的分支: 步骤: 1.选择左下角仓库repositories中的工程名->选择trunk->点击Branch->在提示框里填写分支名称create, 2.在做上角work ...

  2. Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突

    Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突 这篇是接着上篇分布式版本库--Windows下G ...

  3. GIT 分支管理:创建与合并分支、解决合并冲突

    分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...

  4. Jenkins 配合 GitLab 实现分支的自动合并、自动创建 Tag

    Jenkins 配合 GitLab 实现分支的自动合并.自动创建 Tag 背景 GitFlow工作流简介 Gitflow工作流定义了一个围绕项目发布的严格分支模型,它会相对复杂一点,但提供了用于一个健 ...

  5. 版本控制git之二 分支 切换分支 创建分支 合并 删除

      版本控制git之二 分支   有人把 Git 的分支模型称为它的`‘必杀技特性’',也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出. 为何 Git 的分支模型如此出众呢? Git 处 ...

  6. git创建/合并分支/删除分支/将修改后的内容同步到GitHub远程仓库

    1.创建分支并切换到刚创建的分支(这里创建新的分支来修改README.md的内容然后将创建的分支与master分支合并,最后删除创建的分支) $ git checkout -b 分支名 Switche ...

  7. SVN merge的主干,分支的相互合并操作

    本文只研究了 在本地如何进行主干,分支的相互合并 的操作:从主干到分支,从分支到主干. 本地客户端工具是tortoisesvn 测试用例. 1.本地添加test文件夹 在test文件夹下分别建立tru ...

  8. git分支与主干合并操作

    git分支与主干合并操作1.主干合并分支在主干上合并分支 branch (master)git merge branch --squash 提交合并后的代码 (master)git commit -m ...

  9. svn命令行创建和删除分支和tags

    首页 分类首页   目录 原文: http://blog.csdn.net/yangzhongxuan/article/details/7519948 http://zccst.iteye.com/b ...

随机推荐

  1. C#基础知识-使用XML完成一个小程序(十一)

    上一篇中讲到XML基本的结构,还有增删改查的方法,这一篇中我们就来利用XML来完成一个简单的订单系统,主要是实现一个简单学生名单的增删改查,如果想要应用到实际的环境中建议考虑数据量的问题,如果数据量大 ...

  2. 006.ASP.NET MVC ActionResults说明

    原文:http://rachelappel.com/asp.net-mvc-actiohttp://i.cnblogs.com/EditPosts.aspx?postid=3857238&up ...

  3. Oracle PL/SQL Developer 上传下载Excel

    接到需求,Oracle数据库对Excel数据进行上传和下载,百度后没有很全的方案,整理搜到的资料,以备不时之需. 一.下载Oracle数据到Excel中. 下载数据到Excel在MSSql中很简单,直 ...

  4. form表单在发送到服务器时候编码方式

    enctype(编码方式):规定了form表单在发送到服务器时候编码方式.有如下的三个值可选: 1.application/x-www-form-urlencoded.默认的编码方式.但是在用文本的传 ...

  5. <Android 基础(十九)> CoordinatorLayout

    介绍 CoordinatorLayout,中文翻译,协调布局,顾名思义,此布局中的子View之间,子View与父布局之间应该是可以协调工作的,如何协调,Behavior. 今天看下Android St ...

  6. 如何对MySQL数据库中的数据进行实时同步

  7. Python爬虫教程-33-scrapy shell 的使用

    本篇详细介绍 scrapy shell 的使用,也介绍了使用 xpath 进行精确查找 Python爬虫教程-33-scrapy shell 的使用 scrapy shell 的使用 条件:我们需要先 ...

  8. 求解2的N次幂的问题(多种方法)

    #include <iostream> using namespace std; //计算2的N次幂 //一般方法,时间复杂度为2^n __int64 pow2(int n) { __in ...

  9. androidcookie

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { webSettings.setAllowFileAccessFrom ...

  10. [使用经验]cocostudio UI编辑器的裁剪

    日志-2015/03/16 描述:在程序使用UI编辑器导出文件的时候,该panel中大于panel的部分都没有显示出来,例如人物,一些特效等 原因:UI编辑器panel都勾上了裁剪 解决:在编辑器中把 ...