SourceTree 使用技巧

参考资料

  1. SourceTree使用教程(一)—克隆、提交、推送
  2. SourceTree的软合并、混合合并、强合并区别
  3. 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结尾的文件是冲突文件的备份,冲突若已经解决就没用了,可以删除。

在这里插入图片描述

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

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

相关文章

人员位置管理,点亮矿山安全之路

矿山作为一个高危行业,安全问题一直备受关注。人员定位置管理是现代矿山安全管理的重要一环,可以帮助企业更好地实现对人员的实时监控和管理。因此,矿山人员位置管理系统对于矿山安全生产和管理非常重要,可以帮助减少安全事故的发…

vue的 ECMAScript 6的学习

一 ECMAScript 6 1.1 ECMAScript 6 ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 Jscript 和 ActionScript)。 因此,ES6 既是一个历史名词,也…

通过参数化可变形曲线直接从 X 射线投影数据计算分割研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Shell开发实践:服务器的磁盘、CPU、内存的占用监控

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师…

iOS开发Swift-4-IBAction,group,音乐播放器-木琴App

1.使用素材创建木琴App的UI。 2.连接IBAction。 其余按钮直接拖拽到play里边。 当鼠标置于1处时2处显示如图,表示成功。当用户按下任一按钮都会触发play中的内容。 3.将7个按钮的View中的Tag值分别调为1、2、3、4、5、6、7. 4.将音频文件拖入项目文件中。 Create gr…

Arcface部署应用实战

1、概述 人脸识别的一个比较常用的网络arcface,依赖于其特殊设计的loss函数,使得模型在训练的时候能够实现类间距离增大,类内的距离不断减小,最终使得所训练的backbone能够获取鉴别性很高的特征,便于人脸识别。 本文…

POI-TL制作word

本文相当于笔记,主要根据官方文档Poi-tl Documentation和poi-tl的使用(最全详解)_JavaSupeMan的博客-CSDN博客文章进行学习(上班够用) Data AllArgsConstructor NoArgsConstructor ToString EqualsAndHashCode public …

SpringBoot项目通过分词器生成词云

目录 前言一、词云是什么?二、使用步骤1.引入依赖2.application.yml3.Controller4.分词工具类4.词云生成工具类、支持输出文件和字节流 注意 前言 公司项目涉及到员工任务管理,需要从员工任务中获取任务信息生成个人词云图,可以把员工任务中…

排序算法问题

给你一个整数数组 nums,请你将该数组升序排列。 示例 1: 输入:nums [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums [5,1,1,2,0,0] 输出:[0,0,1,1,2,5] 代码如下: 1.插入排序(简…

容器技术Linux Namespaces和Cgroups

对操作系统了解多少,仅仅敲个命令吗 操作系统虚拟化(容器技术)的发展历程 1979 年,UNIX 的第 7 个版本引入了 Chroot 特性。Chroot 现在被认为是第一个操作系统虚拟化(Operating system level virtualization&#x…

2359. 找到离给定两个节点最近的节点;1781. 所有子字符串美丽值之和;2406. 将区间分为最少组数

2359. 找到离给定两个节点最近的节点 核心思想:统计node1和node2分别到每个点的距离,然后在枚举每个点统计结果。关键在于如何统计node到每个点的距离,首先是初始化为inf很重要,因为在枚举的时候,因为是inf代表了这个节点无法到达…

STM32--RTC实时时钟

文章目录 Unix时间戳时间戳转换BKPRTC简介RTC框图硬件电路RTC的注意事项RTC时钟实验工程 Unix时间戳 Unix 时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。 时间戳存储在一个秒计数器中,秒计数器为32位/64…