SourceTree 使用技巧

参考资料

  1. SourceTree使用教程(一)—克隆、提交、推送
  2. SourceTree的软合并、混合合并、强合并区别
  3. SourceTree 合并分支上的多个提交,一次性合并分支的多次提交至另一分支,主分支前进时的合并冲突解决
  4. git创建补丁和打补丁

目录

  • 一. 基础设置
    • 1.1 用户信息设置
    • 1.2 比较与合并工具设置
    • 1.3 代理设置
    • 1.4 Github配置
      • 1.4.1 Personal access tokens
      • 1.4.2 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 解决代码冲突问题
  • 六. 提交履历
    • 6.1 搜索提交履历
    • 6.2 查看文件的变更履历
  • 七. 打补丁
    • 7.1 打补丁原因
    • 7.2 补丁的种类
    • 7.3 对变更代码打补丁
    • 7.4 在其他分支上应用打好的补丁


一. 基础设置

1.1 用户信息设置

👉全局用户信息配置

在这里插入图片描述

👉单独项目用户信息配置

在这里插入图片描述

1.2 比较与合并工具设置

👉当代码冲突时,所使用的比较与合并工具是可以自己指定的。

在这里插入图片描述

1.3 代理设置

👉国内使用Github时,速度可能会比较慢。可以在此处指定魔法上网的代理服务器地址。

在这里插入图片描述

1.4 Github配置

几年前,向Github推送代码所需的密码和登录密码相同,现在需要单独配置了。
主要分为Personal access tokensSSH密钥两种。

1.4.1 Personal access tokens

⏹登录GitHub之后,访问如下网址
https://github.com/settings/tokens

⏹通过下图所示,配置Personal access tokens之后,便可在推送代码的时候,使用该生成的token当做密码来进行推送。

在这里插入图片描述

1.4.2 SSH密钥

⏹通过命令行ssh-keygen -t rsa -C "邮箱地址"来生成公钥和私钥
在这里插入图片描述

⏹在GitHub中进行配置,导入我们生成的公钥。

在这里插入图片描述
在这里插入图片描述

⏹在SourceTree中配置私钥
💥注意:SSH客户端,应该选择OpenSSH,选择之后会自动为我们加载Git生成的私钥所在路径

在这里插入图片描述

⏹使用SSH协议进行Clone

在这里插入图片描述
⏹Clone完成之后,继续推送代码,可以看到推送成功。

在这里插入图片描述


二. 代码提交

在这里插入图片描述

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结尾的文件是冲突文件的备份,冲突若已经解决就没用了,可以删除。

在这里插入图片描述


六. 提交履历

6.1 搜索提交履历

⏹可以根据提交信息文件变化作者来搜索提交履历。

在这里插入图片描述

6.2 查看文件的变更履历

⏹选中变更的文件后,再选择选定项目的变更历史可以打开此文件的所有变更履历。

在这里插入图片描述
⏹按住Ctrl键,可以选中不同时间点的提交履历,然后使用第三方工具进行外部差异比较

在这里插入图片描述


七. 打补丁

7.1 打补丁原因

⏹交给客户的版本是2.0版本的,随着公司的发展,项目已经到了3.0。
这时候客户提出了一个bug,我们需要对其进行修复。
因为客户所支付的款项只是到2.0版本的,我们不可能免费给客户升级到3.0版本。
这个时候就可以使用打补丁的方式来提交代码。

⏹项目开发的时候要求一个页面一个代码分支,同时要求代码写完之后要求指定的人来review,
还要求不能向Git分支提交太多次代码,否则分支就会很乱。
这个时候,就可以让开发者将开发完的代码先提交到本地Git仓库,然后将所有的改动都打一个补丁,将补丁发给代码review者。代码review者,将补丁应用到本地的review分支进行代码review。

7.2 补丁的种类

⏹Git 提供了两种补丁方案,一是用git diff生成的UNIX标准补丁.diff文件,二是git format-patch生成的Git专用.patch 文件

  • .diff文件只是记录文件改变的内容,不带有commit记录信息,多个commit可以合并成一个diff文件。
  • .patch文件带有记录文件改变的内容,也带有commit记录信息,每个commit对应一个patch文件。

7.3 对变更代码打补丁

⏹如下图所示,我们本地的test分支和master分支提交履历相同,且master分支修改了3个文件。

在这里插入图片描述

⏹我们在master分支上将变更的文件提交到本地Git仓库,然后选择创建补丁

在这里插入图片描述

⏹指定好补丁路径和补丁名称后,生成了一个.diff文件。

在这里插入图片描述

7.4 在其他分支上应用打好的补丁

⏹切换到test分支后,选择应用补丁,然后指定补丁所在的路径,即可应用打好的补丁。

在这里插入图片描述

⏹我们选择的应用模式是修改工作副本文件,这样可以方便review代码文件。

在这里插入图片描述
⏹若我们选择的应用模式是以完整的提交导入的话,效果如下。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/123779.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java:Springboot和React中枚举值(数据字典)的使用

目录 1、开发中的需求2、实现效果3、后端代码4、前端代码5、接口数据6、完整代码7、参考文章 1、开发中的需求 开发和使用过程中,通常会涉及四个角色:数据库管理员、后端开发人员、前端开发人员、浏览者 数据库使用int类型的数值进行存储(e…

Mac不想用iTerm2了怎么办

这东西真是让人又爱又恨,爱的是它的UI还真不错,恨的是它把我的环境给破坏啦!让我每次启动终端之后都要重新source激活我的python环境,而且虚拟环境前面没有括号啦!这怎么能忍!在UI和实用性面前我断然选择实…

C语言学习:6、C语言程序的循环结构

生活中,有很多循环的东西,比如钟表就是在1到12循环,太阳东升西落也是循环,春夏秋冬也是循环,人生可能也是一个循环。 while C语言中的循环可以这么描述:当某个条件成立,就一直做某件事或某些事…

学习笔记——Java入门第一季

1.1 Java的介绍与前景 Java语言最早期的制作者:James Gosling(詹姆斯高斯林) 1995年5月23日,Sun Microsystems公司宣布Java语言诞生。 1.2 Java的特性与版本 跨平台 开源(开放源代码) Java代码&#xff…

SSM整合~

构建并配置项目: 第一步:创建maven项目 第二步:配置pom.xml文件 设置打包方式: 为了方便部署,我们通常情况下,将项目打包为WAR,因为WAR文件是一种可执行的压缩文件,它可以将项目…

MATLAB中fillmissing函数用法

目录 语法 说明 示例 包含 NaN 值的向量 由 NaN 值组成的矩阵 插入缺失数据 使用移动中位数方法 使用自定义填充方法 包含缺失端点的矩阵 包含多个数据类型的表 fillmissing函数的功能是填充缺失的条目。 语法 F fillmissing(A,constant,v) F fillmissing(A,meth…

Linux——线程详解(一)

索引 初识线程1.inux下的线程2.再谈进程3.理解页表4. 再次理解虚拟到物理的转化 线程的控制1.线程的创建2.线程异常3.验证pthread_join 的第二个参数4.线程的退出方式5. 线程的公有和私有6.pthread_t 与线程独立栈7.线程的局部性存储8.线程分离 初识线程 1.inux下的线程 之前了…

【数据结构】单链表详解

当我们学完顺序表的时候,我们发现了好多问题如下: 中间/头部的插入删除,时间复杂度为O(N)增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当…

光栅和矢量图像处理:Graphics Mill 11.4.1 Crack

Graphics Mill 是适用于 .NET 和 ASP.NET 开发人员的最强大的成像工具集。它允许用户轻松向 .NET 应用程序添加复杂的光栅和矢量图像处理功能。 光栅图形 加载和保存 JPEG、PNG 和另外 8 种图像格式 调整大小、裁剪、自动修复、色度键和 30 多种其他图像操作 可处理任何尺寸&am…

AJAX学习笔记1发送Get请求

传统请求有哪些方式,及缺点 传统请求有哪些? 1.直接在浏览器地址栏上输入URL. 2.点击超连接. <a href"/上下文/请求地址">超链接请求</a> ---->相对路径 <a href"http://www.baidu.com">超链接请求</a> ---->绝对路…

【前端】React项目初体验

React介绍 React 是一个非常流行的 JavaScript 前端框架&#xff0c;它为开发人员提供了一种快速构建高质量用户界面的方式。以下是使用 React 构建项目的初体验&#xff1a; 安装 React 和相关依赖项 使用 React 开发项目需要先安装一些必需的依赖项&#xff0c;包括 Node.…

Echarts 中国地图

直接展示效果图&#xff1a; 我们需要引入两个文件&#xff1a; echarts.js 官网地址下载&#xff1a;快速上手 - Handbook - Apache ECharts chain.js 这个官网已经找不到了&#xff0c;需要自行搜寻下载 也可以私信我(网上下载的China.js会导致省名称定为不准确&#xff0…

leetcode 1002. 查找共用字符

2023.9.6 个人感觉这题难度不止简单&#xff0c;考察到的东西还是挺多的。 首先理解题意&#xff0c;可以将题意转化为&#xff1a;求字符串数组中 各字符串共同出现的字符的最小值。 分为三步做&#xff1a; 构造一个哈希表hash&#xff0c;初始化第一个字符串的字母出现频率…

如何挑选低值易耗品管理系统?优化企业管理效率与成本控制

在现代企业管理中&#xff0c;低值易耗品的管理是一个容易被忽视但却十分重要的环节。低值易耗品包括办公用品、耗材、工具等&#xff0c;它们虽然单价不高&#xff0c;但数量庞大且频繁使用&#xff0c;对企业的日常运营和成本控制有着重要影响。为了提高管理效率、降低成本&a…

【Git】删除本地分支;报错error: Cannot delete branch ‘wangyunuo-test‘ checked out at ‘XXX‘

目录 0.环境 1.问题描述 2.解决步骤 1&#xff09;使用命令切换到其他分支 2&#xff09;查看当前本地所有分支 3&#xff09;删除“wangyunuo-test”分支 0.环境 windows 11 64位 Git VScode跑代码 1.问题描述 在做项目过程中&#xff0c;想删除一个本地分支“wangyun…

JS返回NodeList和HTMLCollection详解

HTML DOM 集合 (Collection) 概述 HTML DOM 集合 (Collection) 是一组 HTML 元素&#xff0c;这些元素可以通过 JavaScript 代码进行访问和操作。HTML DOM 集合通常由一个或多个 HTML 元素组成&#xff0c;并提供了访问和操作这些元素的方法。HTML DOM 集合在 JavaScript 中非常…

解决DCNv2不能使用高版本pytorch编译的问题

可变形卷积网络GitHub - CharlesShang/DCNv2: Deformable Convolutional Networks v2 with Pytorch代码已经出来好几年了&#xff0c;虽然声称"Now the master branch is for pytorch 1.x"&#xff0c;实际上由于pytorch自1.11版开始发生了很大变化&#xff0c;原来基…

JAVA毕业设计096—基于Java+Springboot+Vue的在线教育系统(源码+数据库+18000字论文)

基于JavaSpringbootVue的在线教育系统(源码数据库18000字论文)096 一、系统介绍 本系统前后端分离 本系统分为管理员、用户两种角色(管理员角色权限可自行分配) 用户功能&#xff1a; 注册、登录、课程预告、在线课程观看、学习资料下载、学习文章预览、个人信息管理、消息…

elementUI——el-table自带排序使用问题

问题 排序表格默认第一列按降序排&#xff08;状态1&#xff09;&#xff0c;当点击其他列后&#xff08;状态2&#xff09;&#xff0c;改变日期&#xff0c;触发表格数据更新&#xff0c;发现列的排序还点亮在之前的操作上&#xff0c;没有按照默认来&#xff08;回到状态1&a…

Rokid Jungle--Max pro

介绍和功能开发 YodaOS-Master操作系统&#xff1a;以交换计算为核心&#xff0c;实现单目SLAM空间交互&#xff0c;具有高精度、实时性和稳定性。发布UXR2.0SDK&#xff0c;为构建空间内容提供丰富的开发套件 多模态交互 算法原子化 多种开发工具协同 多生态支持 骁龙XR2…