一、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添加的代码。

弹出对话框点击确定。

解决前:

解决后:

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

---------------------
作者:YO_RUI
来源:CSDN
原文:https://blog.csdn.net/qq_34975710/article/details/74469068
版权声明:本文为博主原创文章,转载请附上博文链接!

史上最直接小白式的Sourcetree的分支创建与合并的更多相关文章

  1. 史上最简单Git入门教程

    一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 工作原理 / 流程: Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remo ...

  2. yii2史上最简单式安装教程,没有之一

    写一篇绝对堪称史上最easy的Yii2安装教程教你入门. 既然是安装Yii,我们先去官网下载一份Yii的高级模版,什么,你说打开页面乱七八糟的英文字母你看不懂?那这样大哥,你按照下面的截图进行操作好吧 ...

  3. 你想找的Python资料这里全都有!没有你找不到!史上最全资料合集

    你想找的Python资料这里全都有!没有你找不到!史上最全资料合集 2017年11月15日 13:48:53 技术小百科 阅读数:1931   GitHub 上有一个 Awesome - XXX 系列 ...

  4. 【腾讯Bugly干货分享】OCS——史上最疯狂的iOS动态化方案

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/zctwM2Wf8c6_sxT_0yZvXg 导语 在 ...

  5. C语言中史上最愚蠢的Bug

    C语言中史上最愚蠢的Bug   本文来自“The most stupid C bug ever”,很有意思,分享给大家.我相信这样的bug,就算你是高手你也会犯的.你来看看作者犯的这个Bug吧.. 首 ...

  6. 史上最简单,一步集成侧滑(删除)菜单,高仿QQ、IOS。

    重要的话 开头说,not for the RecyclerView or ListView, for the Any ViewGroup. 本控件不依赖任何父布局,不是针对 RecyclerView. ...

  7. 深入理解JavaScript系列:史上最清晰的JavaScript的原型讲解

    一说起JavaScript就要谈的几个问题,原型就是其中的一个.说了句大话,史上最清晰.本来是想按照大纲式的行文写一下,但写到后边感觉其实就一个概念,没有什么条理性,所以下面就简单按照概念解释的模式谈 ...

  8. 史上最全的maven pom.xml文件教程详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  9. GitHub上史上最全的Android开源项目分类汇总 (转)

    GitHub上史上最全的Android开源项目分类汇总 标签: github android 开源 | 发表时间:2014-11-23 23:00 | 作者:u013149325 分享到: 出处:ht ...

随机推荐

  1. js--判断当前环境是否为app环境

    /** *判断是否是app环境 */ function getIsApp () { var ua = navigator.userAgent.toLowerCase(); if (ua.match(/ ...

  2. php 扫描url死链接 \033[31m ANSI Linux终端输出带颜色

    * 从Packagist上搜索需要的包 https://packagist.org/ * 通过composer下载依赖包 composer require guzzlehttp/guzzlecompo ...

  3. hexo next主题中关于pc端点击链接没问题,移动端点击链接页面不显示。

    个人博客:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.github.io 背景 hexo next主题,本人diy的时候 ...

  4. Java基础拾遗(二) — 关于equals(),hashcode()和 ==

    这里分别讲==和equals()的关系,以及equals()和hashcode()的关系 讲解之前,需要先明白对象的内容.对象的引用,基本类型,引用类型这几个概念,此处不做解释 一.==和equals ...

  5. 19.SimLogin_case07

    # 模拟登录豆瓣 from urllib.request import urlretrieve import requests from bs4 import BeautifulSoup from o ...

  6. 自己写一个依赖注入容器Container

    前言:在平时的写代码中为了解耦.方便扩展,经常使用一些DI容器(如:Autofac.Unity),那是特别的好用. 关于它的底层实现代码 大概是这样. 一.使用依赖注入的好处 关于使用依赖注入创建对象 ...

  7. WPF drag过程中显示ToolTip.

    原文:WPF drag过程中显示ToolTip. 在drag/drop过程中,我们在判断出over的元素上是否可以接受drag的东西之后,通常是通过鼠标的样式简单告诉用户这个元素不接受现在drag的内 ...

  8. SoapUI测试接口【转】

    下载安装soapUI工具,具体安装按照提示往下走就可以,这里不着重说明,下面是我打开soapUI工具的起始窗口:  在Projects上鼠标右键点击,选择new soap project(新建一个SO ...

  9. leetcode146周赛-1130-叶值的最小代价生成树*

    题目描述: class Solution(object): def mctFromLeafValues(self, arr): """ :type arr: List[i ...

  10. leetcode-92-反转链表②

    题目描述: 方法一: class Solution: def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode: ...