SourceTree使用看这一篇就够了

这篇具有很好参考价值的文章主要介绍了SourceTree使用看这一篇就够了。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 你梦想有一天成为git大师,然而面对复杂的git命令,你感觉TMD这我能记得住吗?你曾经羡慕从命令行敲git命令,才会更加炫酷,然而时间一长,TMD命令我有忘了。那么今天我介绍的这款工具会让你从git命令中解救出来,这就是git可视化工具SourcTree。

事实上Git的功能十分强大,而通过使用命令熟记每个逻辑是相对很困难的事情,工作这么年从来没有了解透git的全功能,只是会简单的pus,pull等。当然很多ide开发工具都有格式各样的Git插件,操作方法也各不相同。所以不如直接用不受ide限制的Git管理工具SourceTree,不管你是那种语言,使用哪个开发工具,都从根本上把Git管理从开发工具和繁琐的命令行中解放出来。

介绍

官网介绍

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

翻译过来:

Sourcetree简化了您与Git存储库的交互方式,因此您可以专注于编码。通过Sourcetree的简单Git GUI可视化和管理您的存储库。

欣赏一下git分支情况

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

 

这眼花缭乱的分支线,看着就懵了,其实都是分支进行创建,合并等带来的一个图谱,所有的操作都会记录到git里。本文我们介绍SourceTree的使用。

安装SourceTree

官网下载 www.sourcetreeapp.com/,这款软件是免费的,但是需要注册,登录授权;登录和授权这两个步骤没啥问题,但对于注册需要科学上网才能注册的了。至于如何跳过注册,网上搜一下,window版的是有的。Mac版的没有尝试过,自行网上搜索吧

添加仓库

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

输入仓库的URL

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

克隆成功后的界面

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

SourceTree常用操作介绍

  • 丢弃:放弃未暂缓区的所有修改(工作区中的修改不会添加到版本控制,就是修改的东西不想提交,就直接丢弃)
  • 移除:直接删除文件
  • 克隆(clone):从远程仓库URL加载创建一个与远程仓库一样的本地仓库
  • 提交(commit):将暂存文件上传到本地仓库(我们在Finder中对本地仓库做修改后一般都得先提交一次,再推送)
  • 检出(checkout):切换不同分支
  • 添加(add):添加文件到缓存区
  • 移除(remove):移除文件至缓存区
  • 暂存(git stash):保存工作现场
  • 重置(reset):回到最近添加(add)/提交(commit)状态
  • 合并(merge):将多个同名文件合并为一个文件,该文件包含多个同名文件的所有内容,相同内容抵消
  • 抓取(fetch):从远程仓库获取信息并同步至本地仓库
  • 拉取(pull):从远程仓库获取信息并同步至本地仓库,并且自动执行合并(merge)操作,即 pull=fetch+merge
  • 推送(push):将本地仓库同步至远程仓库,一般推送(push)前先拉取(pull)一次,确保一致
  • 分支(branch):创建/修改/删除分枝
  • 标签(tag):给项目增添标签
  • 工作流(Git Flow):团队工作时,每个人创建属于自己的分枝(branch),确定无误后提交到master分枝
  • 终端(terminal):可以输入git命令行

SourceTree的git-flow

GIT-flow介绍

Git 作为源码管理系统,不可避免涉及到多人协作。团队中商定一个工作流程至关重要的。本文已常用的Git flow 做说明,该模型如下图所示:这张很经典的图片一定要在脑海中记住,这才说明你了解了git

模型图

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

说明:

该模型总存在两个长期(核心)分支

  • master
  • develop

master ,我们认为该分支存放对外发布的版本,任何时候该分支都是稳定的发布版。我们不可以直接在该分支push 代码。

develop ,我们认为该分支的代码存放的是达到稳定并且准备发布时的,我们的新功能开发都是基于此分支。

其次,项目存在的三种短期分支:

  • feature
  • hotfix
  • release

feature ,即功能分支,我们进行新功能的开发将在此分支上进行。该分支的代码基于develop 并且最终回合并回develop 分支。

hoxtfix , 即补丁分支,我们进行线上问题修复将在此分支进行,该代码分支基于master 并且最终将合并会develop、master 分支。

release, 即预发分支。

操作流程实例

当我们进行新功能开发时,需要基于develop分支拉取feature分支进行开发,如增加了一个功能 我们将基于develop分支创建 feature/news 分支。

当功能开发完毕时,我们将提交merge request,将该功能合并到develop 分支。

当所有feature 功能开发完毕,且都已合并回develop,开发自己测试完毕后。准备创建预发布版本,就可以基于develop创建release分支。此时测试人员可以基于该版本release进行测试,发现了问题,我们在release分支上进行问题的修复。

当具备上线条件时,需要将release分支合并到master和develop分支,同时需要打tag,然后进行上线操作,线上发布的为master分支。

当需要修复线上bug时,我们需要基于master创建hotfix分支,当修复且验证完毕后,将hotfix分支合并回master分支,同时为了保证该hotfix包含在下一个发行版中,同时需要合并回develop分支,同时需要打tag。最后删除hotfix分支。

SourceTree的流程

仓库-->git-flow->初始化仓库

每个客户端都需要进行初始化仓库,本地按照git-flow进行。进行初始化的作用就是按照上文提到的既定的标准流程初始化库。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

点击初始化会弹出这个页面,看到下面的分支完全遵循上面介绍的流程

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

当初始化仓库之后,就可以按照gitflow的标准操作去执行了。选择下一个操作,会给出建议操作。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

建立新的功能:新建feature分支

完成功能:当在功能分支上完成开发后,点击完成功能,就会把当前feature分支合并到develop分支。

建立新的发布版本:新建realse版本

完成发布版本:完成之后,会合并到develop分支和master分支

建立新的修复补丁:以mater分支为基础,新建hotfix分支。

完成修复补丁:完成修复补丁,会同步到master和develop分支。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

问题:

完成功能分支的时候,出现了完成功能分支没有下拉项。这个很是苦恼。

抓取、获取分支信息fetch

抓取( Mac 下 的名字)获取( Windows 下的名字)指获取服务端 Git 库的变更信息,比如落后几个版本,超前几个版本,我们平常多人协作的项目,提交代码前需要先获取一下,如果服务端有新的提交,再拉取下别人的更改,可以减少代码冲突。

拉取代码

拉取代码是把远程分支的代码拉取到本地,会和本地代码进行合并,如果有冲突,则会提示冲突

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

提交代码

修改了本地代码,需要进行提交,如下图所示:

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

点击提交按钮后,进入到提交页面。提交页面可以分为几个区域

左侧区域,文件区域,变更区域,底部区域。其中文件区域的展示根据设置不同可以有不同展示。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

文件区域设置。一般情况下 使用分体暂存视图更清晰。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

提交流程:

1、将未暂存的文件选中,就会直接把文件放到已暂存文件区域

2、在下方文本框输入本次代码变动的说明

3、SourceTree默认不会推送到远程仓库,打勾会推送变更到origin(底部栏)

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

其它细节点

在变更区域,会显示本次变更的内容。其中+代表本次增加行;-代表本次删除行;前面2个行号依次代表变更前行号,变更后的行号

可以取消暂存区块。sourcetree 会把所有的变更以区块来分组,所以如果是整个区块的变更都没有意义,可直接丢弃整个块

选择修改的地方,操作按钮会变成,取消暂存行

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

储藏代码

可以将本地修改的代码,先进行缓存。这种一般情况下是拉取远程代码有问题的时候,为了防止冲突,先把本地代码进行储存,然后拉取远程代码,在应用储藏区即可。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

新开分支

在项目中,我们可能分为开发分支、集成分支、生成环境分支等,这时我们只需要在某个节点上右键选择分支即可

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

推送分支

新开的分支不会在远程显示,所以需要将分支推送到远程。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

切换分支

双击分支即可切换分支。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

拉取远程分支

1、在远程分支右键,选择从origin拉取即可,获取远程分支

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

回滚提交

有些时候,我们提交的代码有问题,需要回滚回去。

回滚某次提交

将某次变更(在sourcetree里是某个节点)右键选择回滚提交。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

回滚文件

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

回滚行

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

忽略文件

项目中,有一些文件夹是需要忽略,而不需要提交到仓库里,比如bin目录下,target目录下文件。这个时候就要把一些忽略的文件或者目录写到.gitignore文件中。同样sourceTree也提供可视化操作

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

这里支持忽略精确的单个文件、忽略所有扩展名、忽略文件夹下的一切等。忽略以后,我们不会看到这些文件的变动

注意:需要说明的是忽略文件,只能忽略未跟踪文件,如果已跟踪文件(之前被提交过),需要先将这些文件删除后,提交代码库,再次忽略文件。

合并分支

从别的分支合并到当前分支。可以在要合并的分支上右键选择合并到当前分支。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

当有冲突时,需要解决冲突,然后提交;如果没有冲突,需要手动点击推送按钮将合并后的变更提交到远程

解决冲突

当和别人改了相同文件的相同行时,(大部分我们多人改变了一个文件,git都会帮我们处理掉,自动合并,但是当改变同一文件的相同行时,在拉取时就会有冲突)

冲突文件截图如下:sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

 

解决冲突可以用两种方式

1、对有冲突的文件右键-->启动外部合并工具,一般情况下使用Beyond Compare.来解决冲突。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

2、如果用开发工具idea来解决代码,可以使用idea的对比工具,或者使用exclipse工具。此处不做详细说明。

审查文件

假设一个文件被不同的开发修改过,有段代码需要找到修改人,我们可以右键复查文件查看每一行的作者。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

查看文件变动历史

我们时常需要查看某个文件变动的历史,这里我们可以右键查看文件的 变更历史

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

按文件打开历史版本

有些时候,我们也需要查看文件的历史版本,这里可以选中节点后,选择那个变更文件,右键 打开历史版本

打开已选定的版本,可以查看历史文件,以供我们参考。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

标签的使用

我们有些时候需要给一个变更增加一个标签,比如我们版本已经稳定了。可以标记为稳定1.0标签。

git tag v1
$ git tag -d v1 //移除标签

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

效果如下

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

存档

存档指将当前版本打包成一个zip包。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

检出分支

检出分支意思是将当前项目回到选中的版本,这样我们可以很轻松回到任意一个版本,来编译项目,或者检查当时项目的问题。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

其它

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

合并

一般是用于不通分支间,将某次提交的所有变更合并当当前分支。

rebase变基、交互式变基

交互式变都是变基,主要是将远程的这个分支名里的标识改变,大部分场景用不到

将某某分支 重置到这次提交

个功能蛮好用的,可以将目前的分支回滚到那一次的分支,然后将所有的文件变更显示出来,相当于回到当时准备提交的时候(包含之后的所有变动)。

遴选

从不同的分支中检出一个单独的commit , 并把它和你当前的分支合并,类似于打补丁,例如,修复一个所有分支都有的bug这样的场合可以适用。

在分支上右键由以下功能

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

跟踪远程分支:当未跟踪时表示本地没有和远程建立分支的联系

问题1:SourceTree超前N个版本,落后N个版本

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

这种情况下比较头疼,你提交不了代码,也拉取不了。主要原因是:有别人修改了这个分支,而且已经提交到远程分支上了,同时我们本地也提交修改了该分支,导致有冲突,就报这个错误,那么怎么体面的去解决这个问题呢?

我现在遇到的问题是落户3个版本,那么我需要回退到3个版本前。

右上角-->打开终端。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

 

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

git reset --soft HEAD~3

执行完上面命令,发现本地提交的代码回退了,回到了未提交的状态。此时千万不要提交,处理的思路是:先存储本地文件,然后拉取远程文件,然后应用本地存储,然后再提交文件。

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

贮藏

sourcetree 暂存,Java技术,开发工具,Git,git,spring boot

 

此时可能会有冲突出现,需要解决冲突。解决冲突的步骤详细参考上面解决冲突步骤。

都看到这里了,你学会了吗?喜欢本文的话,关注公众号,更多精彩技术等你学文章来源地址https://www.toymoban.com/news/detail-715363.html

到了这里,关于SourceTree使用看这一篇就够了的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 还不会拓扑排序?看这一篇就够了

    拓扑排序是一种有向无环图(DAG)的顶点排序方法,它将一个有向无环图中的所有顶点排成一个线性序列,使得图中 任意一条有向边上的起点排在终点的前面 。 这样说还不够具体,我们先来看一个例子。假设某大学的课程安排如下: 课程编号 课程名称 先修课程 1 1 1 高等数

    2023年04月08日
    浏览(109)
  • Docker Volume 看这一篇就够了

    默认情况下,在容器内创建的所有文件都存储在可写容器层上。这意味着: 当该容器不再存在时,数据不会持续存在,并且如果另一个进程需要数据,则可能很难将数据从容器中取出。 容器的可写层与运行容器的主机紧密耦合。您无法轻松地将数据移动到其他地方。 写入容

    2024年02月02日
    浏览(97)
  • CAS自旋锁,看这一篇就够了

    前序 时隔多年,杰伦终于出了新专辑,《最伟大的作品》让我们穿越到1920年,见到了马格利特的绿苹果、大利的超现实、常玉画的大腿、莫奈的睡莲、徐志摩的诗… 他说“最伟大的作品”并不是自己的歌,而是这个世界上最伟大的艺术作品们。 为什么要写CAS自旋锁呢?最近

    2023年04月08日
    浏览(45)
  • 超图(HyperGraph)学习,看这一篇就够了

    最近事多,好久没更新了,随便写写(Ctrl+V)点 一、超图定义 通常图论中的图,一条edge只能连接2个vertex,在超图中,不限量 如何理解呢,就用我正在做的KT问题来看:7道题目-7个顶点;4种概念-4条超边,其中第1,2,3题都是考察概念1的,则构建一个包含了这仨的超边,以此类

    2024年02月02日
    浏览(64)
  • getchar函数详解看这一篇就够了-C语言(函数功能、使用、返回值)

    首先要明确getchar的功能是:从计算机终端(一般是键盘)输入一个字符,其值就是输入得到的字符。 目录 getchar函数简介 getchar函数执行过程详解(配图)  getchar用法示例 解释一下:while ((ch=getchar()) != \\\'EOF\\\') 函数原型:int getchar(void);                                 返回

    2024年02月07日
    浏览(62)
  • 【STM32】软件I2C的使用 —— 看这一篇就够了(附代码)

    欢迎来到我的博客。今天我想向大家介绍一下STM32软件I2C功能。 首先,让我们来了解一下I2C(Inter-Integrated Circuit)总线。I2C是一种串行通信总线,最初由Philips公司开发。它允许多个设备使用同一条总线进行通信,并且每个设备都有唯一的地址。I2C通常用于连接微控制器、传感

    2024年02月06日
    浏览(42)
  • JavaScript 入门(简单易懂) 看这一篇就够了

    目录 1、什么是JavaScript 1.1、概述 1.2、历史 2、快速入门 2.1、引入引入JavaScript 2.2、基本语法 2.3、数据类型 2.4、严格检查模式 3、数据类型 3.1、字符串 3.2、数组 3.3、对象 3.4、流程控制 3.5、Map和Set 3.6 iterator 3.7数据类型转换字符串类型 3.8数据类型转换数字型(重点) 3.9标识

    2024年02月02日
    浏览(102)
  • 了解5G安全标准,看这一篇就够了

    随着移动通信系统在社会生活中的使用越来越广泛,特别是5G进一步以企业级应用作为核心应用场景,安全成为了包括5G在内的移动通信系统不可忽视的因素。本文梳理了全球主流移动通信标准化组织在安全方面的标准制定,从而可以快速了解5G协议层面对信息安全的考量。原

    2024年02月05日
    浏览(48)
  • MSP432速成教程(看这一篇就够了)

    (一)GPIO输出 打开芯片数据手册(msp432p401r)第17页的表详细描述了对应引脚的GPIO功能 1.库函数 配置GPIO模式: 设置高低电平 配置驱动强度 只有P2.0、P2.1、P2.2、P2.3引脚可以配置为高驱动程度 This I/O can be configured for high drive operation with up to 20-mA drive capability. 此I/O可配置为高达

    2024年02月13日
    浏览(56)
  • 关于Tacotron2看这一篇就够了

    文章来源 [1712.05884] NATURAL TTS SYNTHESIS BY CONDITIONING WAVENET ON MEL SPECTROGRAM PREDICTIONS 参考博客 声谱预测网络(Tacotron2) Tacotron2 论文 + 代码详解 Tacotron2讲解 论文阅读 Tacotron2 Tacotron2 模型详解 Tacotron2-Details 简介: The system is composed of a recurrent sequence-to-sequence feature prediction network that m

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包