SourceTree 使用技巧
参考资料
- SourceTree使用教程(一)—克隆、提交、推送
- SourceTree的软合并、混合合并、强合并区别
- SourceTree 合并分支上的多个提交,一次性合并分支的多次提交至另一分支,主分支前进时的合并冲突解决
目录
- 一. 基础设置
- 1.1 用户信息设置
- 1.2 比较与合并工具设置
- 1.3 代理设置
- 1.4 SSH密钥
- 二. 代码提交
- 2.1 提交与推送
- 2.2 部分代码块提交
- 2.3 丢弃对代码的修改
- 2.4 贮藏
- 2.5 交互式变基
- 三. 代码回滚
- 3.1 回滚提交
- 3.2 回滚到指定版本
- 3.3 重置到提交概念解释
- 3.3.1 软合并-保持本地所有改动
- 3.3.2 混合合并-保持工作副本并重置索引
- 3.3.3 强行合并-丢弃所有改动过的工作副本
- 四. 分支
- 4.1 分支创建
- 4.1.1 通过分支按钮创建分支
- 4.1.2 通过指定提交创建分支
- 4.2 分支切换
- 4.2.1 切换本地分支
- 4.2.2 切换远程分支
- 4.3 分支删除
- 4.4 分支合并
- 4.4.1 手动选择分支进行合并
- 4.4.2 拉取其他分支完成合并
- 五. 代码冲突解决
- 5.1 解决would be overwritten by merge错误
- 5.2 解决代码冲突问题
一. 基础设置
1.1 用户信息设置
👉全局用户信息配置
👉单独项目用户信息配置
1.2 比较与合并工具设置
👉当代码冲突时,所使用的比较与合并工具是可以自己指定的。
1.3 代理设置
👉国内使用Github时,速度可能会比较慢。可以在此处指定魔法上网的代理服务器地址。
1.4 SSH密钥
二. 代码提交
2.1 提交与推送
⏹点击提交
按钮
⏹将文件添加到暂存区
⏹点击提交按钮,将文件添加到本地Git仓库
git是分布式版本控制工具,存在着本地仓库和远程仓库,所以我们在本地工作副本进行的编辑,要先提交到本地仓库,再从本地仓库推送到远程仓库。
⏹点击推送按钮,将本地git仓库中的变更文件,提交到远端的Git仓库中。
2.2 部分代码块提交
⏹如下图所示,我们对3处进行了修改,但只有js处的代码是本次想要提交的
⏹在未暂存文件
区域,选中一行变更的代码,然后按住Shift进行多选,然后点击暂存行。
然后在已暂存文件
区域处,可以看到只把js处的代码反映上去了。
2.3 丢弃对代码的修改
⏹如果想要丢弃所写的代码,选中代码文件后,选择丢弃
即可。
⏹如果只是部分代码想要丢弃,可以选中要丢弃的代码后,选择丢弃行
。
2.4 贮藏
🤔现在使用Git都是用多分支进行开发,我们一般在自己所在的分支进行开发。但是有时候,可能需要切换到别人所在的分支,帮别人对应bug。
此时自己所在画面的代码可能还没有写完,此时可以将代码提交到本地仓库,或者可以使用贮藏
功能将修改的代码暂存起来。
⏹如下图所示,我们点击贮藏
按钮,添加描述后,将此次变更暂存起来。
⏹在贮藏区域,我们可以看到修改的内容
⏹我们的修改内容放到暂存区之后,本地的代码会返回到未修改的版本。
我们还可以点击应用贮藏区
,来将变更的代码反映到本地的工作副本。
2.5 交互式变基
🤔变基可以将多次本地提交合并为一次提交,简化提交履历。
💥注意:多次提交只是提交到本地Git仓库,并没有推送到远端。
⏹如下图所示,我们分3次提交了代码到本地Git仓库,这3次提交都只是添加了console.log语句,
因此可以合并为一次提交然后推送到远端仓库
⏹交互式变基操作如下所示,选中要合并的提交的前一次提交,点击交互式变基
功能,
然后将多次提交合并为一次。
三. 代码回滚
3.1 回滚提交
🤔有时候刚推送完代码后,发现代码存在错误。这个时候,回滚提交就起到了作用。
💥注意:只能回滚到上一个版本。
⏹如下图所示,我们在最近一次的版本上,创建了一个文件01-test01.html
⏹此时,选择回滚提交,会看到Git给我们创建了一个反向提交,用来撤销上一次的修改。
3.2 回滚到指定版本
⏹点击要回滚到的版本,选择重置当前分支到此次提交
,然后选择强行合并
。
⏹ 选择强行合并之后的效果如下
💥注意:有提示拉取,不要拉取,忽略它。
⏹ 选中最近一次提交,然后在重置当前分支到此次提交
中选择软合并
。
⏹ 选择软合并之后的效果如下
🤔可以看到未提交的更改中
多了一个文件,这个文件正好就抵消了红框中变更履历所对应的内容
只要我们将未提交的更改中
的文件选中推送,正好就回滚到了我们指定的版本。
3.3 重置到提交概念解释
⏹ 如下图所示,我们向本地的Git仓库提交了console.log打印
3.3.1 软合并-保持本地所有改动
将此次提交回滚到指定提交位置,但这个过程中会将修改过的文件暂存到暂存区。
⏹软合并效果如下
🤔可以看到,我们的修改的代码,跑到了已暂存文件
区域。
3.3.2 混合合并-保持工作副本并重置索引
将此次提交回滚到指定的位置,但这个过程中不会将修改过的文件暂存到暂存区,而是将修改过的文件存放在未暂存文件区。
⏹混合合并效果如下
🤔可以看到,我们的修改的代码,跑到了未暂存文件
区域。
3.3.3 强行合并-丢弃所有改动过的工作副本
将此次提交回滚到指定的位置,但这个过程中将直接丢弃之前修改的所有文件,因此在选取此种合并时需要考虑清楚,避免一些不必要的麻烦。
⏹强行合并效果如下
🤔可以看到,我们修改的所有代码,都消失不见,且无法找回。
四. 分支
4.1 分支创建
4.1.1 通过分支按钮创建分支
⏹点击分支按钮,然后给新分支取名字,然后点击创建分支按钮
,就完成了分支的创建。
勾选了检出新分支
checkbox,可以保证分支创建成功后,立马切换到新分支。
此时创建完成的分支,只是存在于本地的Git仓库中,不要忘记将本地分支推送到远端。
4.1.2 通过指定提交创建分支
⏹可以在以某次提交履历为基准创建分支。
4.2 分支切换
4.2.1 切换本地分支
⏹ 右键待切换的分支,然后选择检出
即可。
或者可以双击待切换的分支名字,即可完成切换。
4.2.2 切换远程分支
⏹ 右键待切换的远端分支,然后选择检出
即可。
或者可以双击待切换的远端分支名字,即可完成切换。
4.3 分支删除
⏹分支删除分为删除本地分支 和 远端分支。
4.4 分支合并
4.4.1 手动选择分支进行合并
⏹由下图可知,develop分支领先于develop_test分支3个提交。
我们当前分支在develop_test上,然后选中develop分支的第2次提交,进行合并。
⏹合并之后的效果
由于把develop分支的2次提交合并,可以看到develop_test分支前进了2次。
💥注意:只是合并到本地分支,和远端分支并没有关系。我们还需要推送,才能把此次合并反映到远端上。
4.4.2 拉取其他分支完成合并
⏹如下图所示,develop分支领先于develop_test分支1次提交。
⏹除了手动选择其他的分支的提交进行合并之外,
我们还可以直接拉取其他分支到代码到我们所在的分支完成合并。
⏹合并效果如下图所示。
五. 代码冲突解决
5.1 解决would be overwritten by merge错误
⏹如下图所示,develop分支领先于develop_test分支3个提交,并且修改了S001.html文件
⏹如下图所示,develop_test分支落后于于develop分支3个提交,并且也修改了S001.html文件,且develop_test分支和develop分支对S001.html文件的修改点并不相同。
⏹点击合并后,出现如下图所示的错误。
⏹将副本的修改提交到本地的Git仓库中即可解决。
💥注意:该问题出现的本质的原因就在于两个分支都对S001.html文件进行了修改,
且develop_test分支的修改并没有被Git管理,develop分支的修改无法尝试自动merge到S001.html文件中。
5.2 解决代码冲突问题
⏹在5.1中,我们通过将本地的修改提交到本地Git仓库解决了would be overwritten by merge错误,
因为develop_test分支和develop分支都对S001.html文件进行了修改,所以此时选择合并代码,会出现了如下图所示的代码冲突问题。
⏹点击冲突的文件,选择解决冲突
,然后打开外部合并工具来解决冲突问题。
💥注意:明确自己或者他人的版本是正确的,也可以直接选择使用我的版本
或者使用他人的版本
来快速解决冲突。
⏹通过外部合并工具来解决冲突
⏹冲突解决之后的效果如下图所示
⏹.orig
结尾的文件是冲突文件的备份,冲突若已经解决就没用了,可以删除。
相关文章:

SourceTree 使用技巧
参考资料 SourceTree使用教程(一)—克隆、提交、推送SourceTree的软合并、混合合并、强合并区别SourceTree 合并分支上的多个提交,一次性合并分支的多次提交至另一分支,主分支前进时的合并冲突解决 目录 一. 基础设置1.1 用户信息…...

VIRTIO-BLK代码分析(0)概述
也无风雨也无晴。- 苏轼(宋) 接下来介绍VIRTIO相关内容。首先从VIRTIO-BLK开始分析,VIRTIO-BLK各部分交互图如下所示: 这里包含以下几个部分: Guest UserSpace:虚拟机用户空间,如虚拟机中运行f…...
【2023年11月第四版教材】第10章《进度管理》(第一部分)
第10章《进度管理》(第一部分) 1 章节说明2 管理基础3 管理过程3.1 管理的过程★★★3.2 管理ITTO汇总★★★ 1 章节说明 【本章分值预测】大部分内容不变,细节有一些变化,预计选择题考3-4分,案例和论文 都有可能考&a…...

【多线程案例】生产者消费者模型(堵塞队列)
文章目录 1. 什么是堵塞队列?2. 堵塞队列的方法3. 生产者消费者模型4. 自己实现堵塞队列 1. 什么是堵塞队列? 堵塞队列也是队列,故遵循先进先出的原则。但堵塞队列是一种线程安全的数据结构,可以避免线程安全问题,当队…...

数据结构与算法基础-学习-30-插入排序之直接插入排序、二分插入排序、希尔排序
一、排序概念 将一组杂乱无章的数据按一定规律顺次排列起来。 将无序序列排成一个有序序列(由小到大或由大到小)的运算。 二、排序方法分类 1、按数据存储介质 名称描述内部排序数据量不大、数据在内存,无需内外交换存交换存储。外部排序…...

Qt+C++桌面计算器源码
程序示例精选 QtC桌面计算器源码 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对<<QtC桌面计算器源码>>编写代码,代码整洁,规则,易读。 学习与…...

kubesphere安装Maven+JDK17 流水线打包
kubesphere 3.4.0版本,默认支持的jav版本是8和11,不支持17 。需要我们自己定义JenKins Agent 。方法如下: 一、构建镜像 1、我们需要从Jenkins Agent的github仓库拉取master最新源码,最新源码里已经支持jdk17了。 git clone ht…...

百度搜索清理大量低质量网站
我是卢松松,点点上面的头像,欢迎关注我哦! 据部分站长爆料:百度大规模删低质量网站的百度资源站长平台权限,很多网站都被删除了百度站长资源平台后台权限,以前在百度后台添加的网站大量被删除!…...
WPF数据模板
样式提供了基本的格式化能力,但它们不能消除到目前为止看到的列表的最重要的局限性:不管如何修改ListBoxItem,它都只是ListBoxItem,而不是功能更强大的元素组合。并且因为每个ListBoxItem只支持单个绑定字段,所以不可能…...

浙江绿农环境:将废弃矿山变耕地,为生态文明贡献力量
近年来,随着可持续发展理念在中国乃至全球的日益普及,浙江绿农生态环境有限公司以其独特的创新和实践,成为了绿色发展的典范,在奋进新时代、建设新天堂的背景下,绿农环境在杭州市固废治理行业迈出坚实的步伐࿰…...
HTML/CSS盒子模型
盒子:页面中的所有的元素(标签),都可以看做一个盒子,由盒子将页面中的元素包含在一个矩形区域内,通过盒子的视角更加方便的进行页面布局 盒子模型的组成: 内容区域(contentÿ…...
《Java面向对象程序设计》学习笔记——CSV文件的读写与处理
笔记汇总:《Java面向对象程序设计》学习笔记 笔记记录的不是非常详实,如果有补充的建议或纠错,请踊跃评论留言!!! 什么是CSV文件 CSV文件的定义 CSV 是英文 comma-separated values 的缩写࿰…...

opencv 案例05-基于二值图像分析(简单缺陷检测)
缺陷检测,分为两个部分,一个部分是提取指定的轮廓,第二个部分通过对比实现划痕检测与缺角检测。本次主要搞定第一部分,学会观察图像与提取图像ROI对象轮廓外接矩形与轮廓。 下面是基于二值图像分析的大致流程 读取图像将图像转换…...
Elasticsearch入门介绍
应用场景 1 它提供了强大的搜索功能,可以实现类似百度、谷歌等搜索。 2 可以搜索日志或者交易数据,用来分析商业趋势、搜集日志、分析系统瓶颈或者运行发展等等 3 可以提供预警功能(持续的查询分析某个数据,如果超过一定的值&a…...

QML Book 学习基础3(动画)
目录 主要动画元素 例子: 非线性动画 分组动画 Qt 动画是一种在 Qt 框架下创建交互式和引人入胜的图形用户界面的方法,我们可以认为是对某个基础元素的多个设置 主要动画元素 PropertyAnimation-属性值变化时的动画 NumberA…...

Lesson4-3:OpenCV图像特征提取与描述---SIFT/SURF算法
学习目标 理解 S I F T / S U R F SIFT/SURF SIFT/SURF算法的原理,能够使用 S I F T / S U R F SIFT/SURF SIFT/SURF进行关键点的检测 SIFT/SURF算法 1.1 SIFT原理 前面两节我们介绍了 H a r r i s Harris Harris和 S h i − T o m a s i Shi-Tomasi Shi−Tomasi…...
语言基础篇9——Python流程控制
流程控制 顺序结构、条件结构、循环结构,顺序结构由自上而下的语句构成,条件结构由if、match-case构成,循环结构由for、while构成。 if语句 flag 1 if flag 1:print("A") elif flag 2:print("B") else:print("…...
MATLAB算法实战应用案例精讲-【概念篇】构建数据指标方法(补充篇)
目录 前言 几个高频面试题目 指标与标签的区别 几个相关概念 数据域 业务过程...

【pyqt5界面化工具开发-12】QtDesigner图形化界面设计
目录 0x00 前言 一、启动程序 二、基础的使用 三、保存布局文件 四、加载UI文件 0x00 前言 关于QtDesigner工具的配置等步骤(网上链接也比较多) 下列链接非本人的(如果使用pip 在命令行安装过pyqt5以及tools,那么就可以跳过…...

CXL.mem S2M Message 释义
🔥点击查看精选 CXL 系列文章🔥 🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥 📢 声明: 🥭 作者主页:【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN,…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
WEB3全栈开发——面试专业技能点P4数据库
一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库,基于 mysql 库改进而来,具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点: 支持 Promise / async-await…...

leetcode73-矩阵置零
leetcode 73 思路 记录 0 元素的位置:遍历整个矩阵,找出所有值为 0 的元素,并将它们的坐标记录在数组zeroPosition中置零操作:遍历记录的所有 0 元素位置,将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...
Electron简介(附电子书学习资料)
一、什么是Electron? Electron 是一个由 GitHub 开发的 开源框架,允许开发者使用 Web技术(HTML、CSS、JavaScript) 构建跨平台的桌面应用程序(Windows、macOS、Linux)。它将 Chromium浏览器内核 和 Node.j…...