【最全面】SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决,提交PR)
前言:
俗话说的好工欲善其事必先利其器,Git分布式版本控制系统是我们日常开发中不可或缺的。目前市面上比较流行的Git可视化管理工具有SourceTree、Github Desktop、TortoiseGit,综合网上的一些文章分析和自己的日常开发实践心得个人比较推荐开发者使用SourceTree,因为SourceTree同时支持Windows和Mac,并且界面十分的精美简洁,大大的简化了开发者与代码库之间的Git操作方式。该篇文章主要是对日常开发中使用SourceTree可视化管理工具的一些常用操作进行详细讲解。
SourceTree | Github Desktop | TortoiseGit 可视化管理工具对比:
SourceTree介绍和Atlassian账号注册和登录教程:
连接Gitee or GitHub,获取代码:
注意:这里介绍的是使用SSH协议获取关联远程仓库的代码,大家也可以直接使用过HTTPS协议的方式直接输入账号密码获取关联代码!
全面概述Gitee和GitHub生成/添加SSH公钥:
在SourceTree中添加SSH密钥:
工具=>选择:


SSH客户端选择OpenSSH:

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

SourceTree设置默认工作目录:
设置SourceTree默认项目目录:

SourceTree代码提交:
1.首先切换到需要修改功能代码所在的分支:

2.将修改的代码提交到暂存区:
3.将暂存区中的代码提交到本地代码仓库:
注意:多人同时开发项目的时候,不推荐默认选中立即推送变更到origin/develop,避免一些不必要的麻烦!

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


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

SourceTree分支切换,新建,合并:
1.分支切换:


2.新建分支:

3.合并分支:


SourceTree代码冲突解决:
首先我们需要制造一个提交文件遇到冲突的情景:





直接打开冲突文件手动解决冲突:
1 2 3 4 5 | <<<<<<< HEAD 6月19日 pingrixuexilianxi添加了内容 ======= 6月18日 pingrixuexilianxi2修改了这个文件哦 >>>>>>> a8284fd41903c54212d1105a6feb6c57292e07b5 |
根据项目需求删除不需要的代码就行了,假如都需要的话我们只需要把 <<<<<<< HEAD======= >>>>>>> a8284fd41903c54212d1105a6feb6c57292e07b5都删掉冲突就解决了(注意,在项目中最后这些符号都不能存在,否则可能会报异常)。

采用外部文本文件对比工具Beyond Compare解决冲突:
SourceTree配置文本文件对比工具Beyond Compare:

使用Beyond Compare解决冲突:




Sourcetree中的基本名词说明:
克隆/新建(clone):从远程仓库URL加载创建一个与远程仓库一样的本地仓库。提交(commit):将暂存区文件上传到本地代码仓库。推送(push):将本地仓库同步至远程仓库,一般推送(push)前先拉取(pull)一次,确保一致(十分注意:这样你才能达到和别人最新代码同步的状态,同时也能够规避很多不必要的问题)。拉取(pull):从远程仓库获取信息并同步至本地仓库,并且自动执行合并(merge)操作(git pull=git fetch+git merge)。获取(fetch):从远程仓库获取信息并同步至本地仓库。分支(branch):创建/修改/删除分枝。合并(merge):将多个同名文件合并为一个文件,该文件包含多个同名文件的所有内容,相同内容抵消。贮藏(git stash):保存工作现场。丢弃(Discard):丢弃更改,恢复文件改动/重置所有改动,即将已暂存的文件丢回未暂存的文件。标签(tag):给项目增添标签。工作流(Git Flow):团队工作时,每个人创建属于自己的分枝(branch),确定无误后提交到master分支。终端(terminal):可以输入git命令行。每次拉取和推送的时候不用每次输入密码的命令行:git config credential.helper osxkeychain sourcetree。检出(checkout):切换不同分支。添加(add):添加文件到缓存区。移除(remove):移除文件至缓存区。重置(reset):回到最近添加(add)/提交(commit)状态。
Git分布式版本控制器常用命令和使用:
SourceTree如何提交PR(Pull Request):
Pull Request提交相关操作参考该篇文章:
1、fork 项目:
2、克隆本地
打开Git Bash输入仓库克隆命令:
1 | git clone https: //github.com/liangtongzhuo/taro-ui.git |
3、根据文档创建分支
拖进 SourceTree,基于 dev 创建分支如下图:
4、提交修改的代码到远程代码库
文章上面已经提到了使用SourceTree提交的相关操作,可参考:
https://www.cnblogs.com/Can-daydayup/p/13128633.html#_label5(或者Ctrl F:SourceTree代码提交)
当然也可以使用git命令提交:
1 2 3 | git add . --提交所有修改的文件到本地暂存区 git commit -m "fix(dos):修正文字 " --提交到本地代码库 git push --提交到github中的远程代码库 |
5、提交 Pull Request
第四步提交成功后,进入原来fork的仓库,点击 Compare
提交你的说明,选择合并的分支即可,剩下等待合并。
作者名称:追逐时光者
作者简介:一个热爱编程、善于分享、喜欢学习、探索、尝试新事物和新技术的全栈软件工程师。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。如果该篇文章对您有帮助的话,可以点一下右下角的【♥推荐♥】,希望能够持续的为大家带来好的技术文章,文中可能存在描述不正确的地方,欢迎指正或补充,不胜感激。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体