Sourcetree使用【转载】

本文详细介绍了如何使用Sourcetree进行分支的创建、合并及冲突解决,包括远程仓库的克隆、本地分支的创建、代码的推送与拉取、分支的合并过程以及冲突的处理方法。

原文地址:https://blog.youkuaiyun.com/qq_34975710/article/details/74469068

一、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.youkuaiyun.com/qq_34975710/article/details/74469068

### 使用 SourceTree 进行版本控制的指南 SourceTree 是一款由 Atlassian 开发的免费图形化 Git 客户端,它为开发者提供了一个直观的界面来管理代码版本,特别适合希望避免命令行复杂性的用户。无论是初学者还是有经验的开发者,SourceTree 都能显著简化 Git 的使用流程,提高团队协作效率。 #### 安装与配置 在安装 SourceTree 时,可以选择是否立即创建 Bitbucket 账户,以及是否配置 SSH 密钥。对于新手来说,可以暂时跳过 SSH 密钥的设置,并在后续通过 Git 生成后再行添加。一旦安装完成,可以通过以下步骤来配置远程仓库的连接: - **SSH 密钥配置**:进入 `工具 > 选项 > 一般 > SSH 客户端配置`,选择生成的私钥文件(例如 `C:\Users\xxxxx\.ssh\id_rsa`),并指定 SSH 客户端为 OpenSSH。 - **HTTPS 连接**:如果选择使用 HTTPS 方式连接远程仓库,则只需输入用户名和密码即可完成身份验证[^3]。 #### 设置默认工作目录 为了更好地组织项目文件,建议设置一个默认的工作目录。这可以通过 `工具 > 选项 > 一般 > Repo Settings` 来实现,选择一个合适的文件夹作为所有项目的存储位置。 #### 克隆仓库 要开始对一个项目进行版本控制,首先需要从远程仓库克隆代码到本地。在 SourceTree 中,点击新建标签页中的 `Clone` 按钮,输入原路径/URL(即项目的 Git 路径)、目标路径(本地保存位置)以及项目名称(通常会根据路径自动获取)。 #### 拉取、提交与推送 - **拉取更新**:定期从远程仓库拉取最新的更改,以保持本地代码库的最新状态。这可以通过右键点击分支或使用顶部菜单中的 `拉取` 功能来完成。 - **提交更改**:当对代码进行了修改后,需要将这些更改提交到本地仓库。在 SourceTree 的界面中,未提交的更改会被列出,选中相应的文件后填写提交信息,然后点击 `提交`。 - **推送更改**:提交完成后,为了使其他团队成员也能看到你的改动,需将这些更改推送到远程仓库。这一步骤可以通过点击 `推送` 按钮来执行[^3]。 #### 解决合并冲突 尽管 SourceTree 提供了图形界面来帮助用户更直观地解决合并冲突,但在某些情况下,可能还需要手动编辑文件来解决冲突。当发生冲突时,SourceTree 会在相关文件旁边显示冲突图标,双击该图标可以打开合并工具,辅助完成冲突解决过程[^2]。 #### 工作流管理 SourceTree 支持多种 Git 工作流模型,包括但不限于 Feature Branch Workflow、Gitflow Workflow 和 Forking Workflow。了解和选择适合团队的工作流对于有效利用 SourceTree 至关重要。比如,在 Feature Branch Workflow 中,每个新功能都在独立的分支上开发,完成后合并回主分支;而在 Gitflow Workflow 中,则有更加严格的分支管理和发布流程。 ```python # 示例代码:模拟一个简单的 Git 提交消息生成器 def generate_commit_message(changes): """ 根据更改内容生成提交信息 :param changes: list of str, 描述了具体的更改内容 :return: str, 提交信息 """ message = "Update files:\n" for change in changes: message += f"- {change}\n" return message # 使用示例 changes = ["修复了登录页面的样式问题", "优化了用户注册流程"] commit_msg = generate_commit_message(changes) print(commit_msg) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值