Sourcetree的分支创建与合并

2023-11-16

一、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添加的代码。
这里写图片描述
弹出对话框点击确定。

解决前:
这里写图片描述

解决后:
这里写图片描述

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


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sourcetree的分支创建与合并 的相关文章

  • 从 github 中删除子项目提交

    我有两个存储库A and B 我错误地在我的机器上将仓库 B 克隆到了 A 内 我从存储库 B 中删除了所有代码 但是当我在源上从 A 推送并合并代码时 它还显示了子项目提交B在 Github 仓库上 我想从我的 master 上删除子项目
  • 获取最新远程提交的 SHA1 [重复]

    这个问题在这里已经有答案了 可能的重复 git bash 如何检查是否有新的提交可用 https stackoverflow com questions 6006759 git bash how to check if theres a n
  • 如何使用 GitHub API 一次检索多个用户?

    我能够获取单个用户 或自某个时间戳以来创建的所有用户 或者与 GitHub API 进行某些搜索匹配的位置 https developer github com v3 users get a single user https develo
  • Visual Studio Code 内置故事,用于查看 git 提交历史记录并对其内容进行比较

    In this https stackoverflow com questions 37899765 how can i view the git history in visual studio code 60013101 noredir
  • 在 Web 应用程序中显示最新的提交值?

    我有一些 Rails 应用程序 我使用 Git 作为版本控制系统 我使用 GitHub 或 Beanstalk 作为存储库主机 从理论上讲 我想要做的事情非常简单 以某种方式在 Web 应用程序的页脚中显示最新的提交 ID 号 哈希值 这样
  • 如何签出仅在“git ls-remote”中列出的分支?

    我遇到了无法切换到仅列出的分支的情况git ls remote 这是详细信息 我分叉了一个 github repoA 作为 repoB 创建了自己的分支并将其推送到 ComputerA 中的 repoB 在 ComputerB 中 我将分叉
  • 您的分支比“origin/master”领先 3 个提交

    我在运行时收到以下信息git status Your branch is ahead of origin master by 3 commits 我读过其他一些帖子 解决这个问题的方法是运行git pull rebase但是 rebase
  • 从分叉存储库的 GitHub 操作发布评论的解决方法

    我需要在 GitHub 操作完成后向 GitHub 拉取请求发表评论 例如当 FOSS 社区成员提交 PR 时 我知道 当操作从分叉的存储库运行时 令牌没有对父存储库的写访问权限 因此它无法发布评论 人们是否为此找到了任何可行的解决方法 我
  • 如何生成类似github的影响图?

    是否有一些程序 或者我错过的一些神奇的 git 插件 可以从 git 存储库获取影响图或类似的东西 而无需通过 github 就数据收集而言 我可以生成图表 我不确定从哪里开始编写自己的代码 我假设有一些标志我可以传递给 git log 来
  • 我可以忽略全局 .gitignore 吗?

    我的全局 gitignore 一般都很棒 但对于这个一次性项目 我不希望应用全局规则 如何删除这个怪异存储库的全局 gitignore 规则 在您的存储库中运行此命令 git config local core excludesfile f
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 为什么“git描述-dirty”在描述干净结帐时添加“-dirty”后缀?

    我刚刚发现 dirty选项git describe看起来它应该做一些非常有用的事情 即在输出中附加一个后缀git describe当工作树脏时 但是在我的一些存储库上似乎并非如此 git status On branch 8 30 noth
  • SSL 适用于浏览器、wget 和curl,但不适用于 git

    我有一个网站 用于托管 redmine 和几个 git 存储库 这非常适合 http 但我无法使用 https 进行克隆 即 git clone http mysite com git test git 工作正常 但是 git clone
  • 将 Visual Studio 在线 Git 存储库集成到 Android Studio 1.0.2

    我正在使用 Visual Studio Online 进行开发过程 我想将我的 Android Studio 1 0 2 代码集成到其中 但是 据我所知 Android Studio 没有 TFS 插件 这就是为什么我想使用 Git 进行源
  • 更改先前提交的作者姓名:快进推送被拒绝

    我最近在 GitHub 上打开了一个存储库 我是 Git 新手 与新人一样 我使用默认名称和电子邮件进行提交 按照最佳菜鸟传统 我发现五次提交为时已晚 现在乐趣开始了 因为我开始搜索有关如何更改这些提交的作者和提交者名称的信息 美好的 我基
  • GitPython 检查 git pull 是否更改了本地文件

    使用 GitPython 我只想在拉取后本地文件发生更改时才调用函数 例如 如果我在一台单独的计算机上进行推送 然后拉第一台计算机 它按预期工作 但不提供任何输出 理想的输出是已更改的文件列表 或者只是告诉我拉动是否有错误 没有拉动 因为分
  • Github 操作错误地认为变量是秘密,因此不设置输出

    我的工作流程文件中的一个步骤将返回我的 aws 账户中 EC2 实例的一些 ID 然后我将这些 ID 设置为 github 输出 以便在我的工作流程文件中的其他作业中使用 我在许多工作流程中都这样做了 步骤将返回如下内容 i 0d945b0
  • 检查 Git 中是否需要 pull

    如何检查远程存储库是否已更改并且需要拉取 现在我使用这个简单的脚本 git pull dry run grep q v Already up to date changed 1 但它比较重 有没有更好的办法 理想的解决方案是检查所有远程分支
  • 删除 Xcode 项目的源代码控制

    我在 Xcode 项目上使用源代码控制已经有一段时间了 但现在我不想使用源代码控制 如何从 Xcode 中的项目中删除源代码控制 有三种方法 方法 1 将禁用所有项目的源代码管理 方法 2 将删除所有项目的单个存储库的链接 方法 3 将删除
  • 在种子项目上构建时如何组织 git 存储库

    我正在基于从 github 克隆的种子项目 MEAN io 构建一个网站 如何将这些文件与我自己的文件分开 由于该种子提供了广泛的文件框架 因此我自己的文件分布在整个项目中 我希望能够从种子中提取更新 但不能将其与我添加的文件混合 我知道我

随机推荐

  • VS Code 安装方法

    1 安装控制台程序 NET SDK 功能 应用能够正常的运行和构建 NET SDK下载地址 下载 NET Linux macOS 和 Windows 2 安装驱动编辑器vscode vscode下载地址 https code visuals
  • 配置ssd为缓存_结合群辉420+的存储配置,聊聊NAS硬盘该如何选

    最近几年随着大家拍照 拍视频的需求越来越强 手机容量一直水涨船高 从几年前64G就算 海量存储 到现在 256G是主流 512G不嫌多 很多小伙伴都感叹因为视频需求 手机的存储容量永远不够用 大量的视频文件 也就意味着传统的文件管理系统也继
  • 从0实现基于Linux socket聊天室-实现聊天室的公聊、私聊功能-4

    前面文章链接如下 从0实现基于Linux socket聊天室 多线程服务器模型 1 从0实现基于Linux socket聊天室 多线程服务器一个很隐晦的错误 2 从0实现基于Linux socket聊天室 实现聊天室的登录 注册功能 3 上
  • C语言memcpy函数的用法

    介绍 memcpy是memory copy的缩写 意为内存复制 在写C语言程序的时候 我们常常会用到它 它的函原型如下 void memcpy void dest const void src size t n 它的功能是从src的开始位置
  • GC垃圾回收机制

    GC垃圾回收机制 一 GC原理 1 为什么进行垃圾回收 二 JVM与回收算法 1 内存分配 2 回收算法 1 标记 清除 Mark sweep 2 复制 Copying 3 标记 整理 Mark Compact 4 分代收集算法 1 新生代
  • 高手思考问题的底层逻辑究竟是什么?

    花半秒钟就看透事物本质的人 和花一辈子都看不清事物本质的人 注定是截然不同的命运 01 人类是如何认识世界的 我们用视觉 听觉 味觉 嗅觉 触觉来感知这个世界 对一些现象习以为常 也许你从来没有思考过 光真的是五颜六色的吗 水果的味道真是甜
  • org.hibernate.HibernateException: Unable to make JDBC Connection

    部分错误日志 java lang UnsupportedOperationException The application must supply JDBC connections
  • Python爬虫之入门保姆级教程,学不会我去你家刷厕所

    今天这个教程采用最简单的爬虫方法 适合小白新手入门 代码不复杂 文章目录 今天这个教程采用最简单的爬虫方法 适合小白新手入门 代码不复杂 首先打开咋们的网站 一 导入相关库 requests库 二 相关的参数 url headers 三 向
  • 解决Mac安装LightGBM报错LightGBM and gcc 8 in MacOS: Library not loaded

    Github Issue上有一个解决方法 但是博主失败了 https github com Microsoft LightGBM issues 1369 以下是我的解决方法 博主解决方法 首先卸载 pip uninstall lightgb
  • 帝国CMS微信小程序服务器端接口API

    帝国CMS微信小程序服务器端接口API 100个左右接口详细请看 https www guiboweb com wxapi html 使用说明 使用示例 demo 安全验证 security 新闻模型 新闻列表与搜索 list 新闻内容 a
  • QT 设置窗口阴影,设置窗口圆角

    QT开发过程中 添加过自定义标题栏后 因为设置了 setWindowFlags Qt FramelessWindowHint 属性 widget界面后面阴影没有了 现在使用paint的方法绘制阴影和窗口圆角 一方面能设置阴影 一方面可解决设
  • 【java基础】包装类,自动装箱和自动拆箱

    文章目录 基本介绍 包装类 自动装箱 自动拆箱 包装类注意事项 包装类比较 包装器内容不可变 基本介绍 有时 需要将int这样的基本类型转换为对象 所有的基本类型都有一个与之对应的类 例如 Integer类对应基本类型int 通常 这些类称
  • python数据挖掘分析案例python_吴裕雄 数据挖掘与分析案例实战(4)——python数据处理工具:Pandas...

    导入模块 import pandas as pd import numpy as np 构造序列 gdp1 pd Series 2 8 3 01 8 99 8 59 5 18 print gdp1 取出gdp1中的第一 第四和第五个元素 p
  • verilog 四舍五入_IEEE 754 round-to-nearest-even Verilog代码

    IEEE 754 round to nearest even IEEE 754浮点数标准里面 对于取整的规定 浮点数的舍入任何有效数上的运算结果 通常都存放在较长的暂存器中 当结果被放回浮点格式时 必须将多出来的位元丢弃 有多种方法可以用来
  • el-checkbox中使用indeterminate 状态

    indeterminate 属性用以表示 checkbox 的不确定状态 一般用于实现全选的效果
  • 数学建模列题整理2

    微分方程组的数值模拟 例 某湖泊中有机物新城代谢系统模型的状态方程组 时间 t 是以年为单位 Xs 表示 t 时刻太阳提供的能量 Xp 表示 t 时刻植物生长的数 量 Xh 表示吞食植物的虫类生成数量 Xr 为 t 时刻食虫植物的生长数量
  • 9宫格for循环

    9宫格for循环 总数 NSUInteger totalCount 9 总列数 NSUInteger columnMaxCount 6 总行数 NSUInteger row totalCount columnMaxCount totalCo
  • 解决'webpack-dev-server --inline --progress --config build/webpack.dev.conf.js'

    我的报错 webpack dev server inline progress config build webpack dev conf js 报错截图 解决方法 1 在终端运行指令 npm install webpack dev ser
  • 解决vue图片不刷新问题:浏览器缓存与缓存控制头的终极对决

    在现代Web开发中 许多开发者都曾经遇到过一个令人困扰的问题 当图片URL没有变化但图片内容却发生了变化时 浏览器似乎不会主动刷新图片 从而导致显示旧的内容 这个问题在网站和应用中的图片更新时尤为突出 可能会影响用户体验和页面正确性 在这篇
  • Sourcetree的分支创建与合并

    一 Sourcetree简单介绍 通过Git可以进行对项目的版本管理 但是如果直接使用Git的软件会比较麻烦 因为是通过一条一条命令进行操作的 Sourcetree则可以与Git结合 提供图形界面 使用会方便很多 Git和Sourcetre