Sourcetree 虽然不咋的好用,但了解一些基本使用也算可以_sourcetree好用吗-程序员宅基地

技术标签: git  Java 技术栈  svn  

在这里插入图片描述

一、基本介绍

1.1 基本介绍

  Sourcetree 是一款Windows 和Mac OS X 下免费的 SVN、Git 客户端,同时也是 Mercurial 和 Subversion 版本控制系统工具。Sourcetree 支持创建、克隆、提交、push、pull 和合并等操作。SourceTree 拥有一个精美简洁的界面,无需使用命令行,可以处理托管和本地存储库,主要依赖可视化界面操作,省去繁琐复杂不容易理解的终端命令,大大简化了开发者与代码库之间的 Git 操作方式,这对于那些不熟悉Git命令的开发者来说非常实用。

在这里插入图片描述

1.2 主要功能

1.3 什么是版本控制

  版本控制,也称为源代码控制,是跟踪和管理软件代码更改的做法。版本控制系统是帮助软件团队管理源代码随时间变化的软件工具。随着开发环境的加速,版本控制系统帮助软件团队更快、更智能地工作。它们对 DevOps 团队特别有用,因为它们可以帮助他们减少开发时间并增加成功部署,帮助高性能开发和团队繁荣发展。
  版本控制软件跟踪对特殊数据库中代码的每一次修改。如果出现错误,开发人员可以倒流并比较早期版本的代码,以帮助修复错误,同时最大限度地减少对所有团队成员的干扰。
  对于几乎所有的软件项目,源代码就像皇冠上的宝石——一种必须保护其价值的宝贵资产。对于大多数软件团队来说,源代码是开发人员通过仔细努力收集和提炼的关于问题域的宝贵知识和理解的存储库。在团队中工作的软件开发人员不断地编写新的源代码并更改现有的源代码,团队中的一位开发人员可能正在开发一项新功能,而另一位开发人员通过更改代码来修复不相关的错误,每个开发人员都可能对软件的某个部分所做的更改可能与另一位同时工作的开发人员所做的更改不兼容。此外,在所有软件开发中,任何更改都可能自行引入新的错误,并且新软件在经过测试之前不能被信任。版本控制可帮助团队解决此类问题,跟踪每个贡献者的每个单独更改,并帮助防止并发工作发生冲突。
  良好的版本控制软件支持开发人员首选的工作流程,而不会强加一种特定的工作方式。理想情况下,它也适用于任何平台,而不是规定开发人员必须使用什么操作系统或工具链。出色的版本控制系统促进了对代码的流畅和持续的更改流程,而不是文件锁定的令人沮丧和笨拙的机制 - 以阻止其他开发人员的进展为代价为一个开发人员开了绿灯。

二、安装和设置

2.1 Mac 安装

  1. 登录Sourcetree官网 : https://www.sourcetreeapp.com/,点击Download for Mac OS X,即开始自动下载,大约60M,稍微等待即可。
    在这里插入图片描述

  2. 下载完成后双击软件安装包,若是出现【Sourcetree 已损坏,无法打开,因为无法确认开发者的身份】,这是 macOS 启用了新的安全机制的问题,苹果默认是只允许安装自家【App Store】来源的应用,如果你想安装第三方的应用,那么需要在【系统偏 好设置 -> 安全性与隐私 -> 通用】中点击【仍要打开】选项。
    在这里插入图片描述

  3. 拖动Sourcetree到Applications中
    在这里插入图片描述

  4. 打开SourceTree Mac版,弹出注册界面。这一步跳过不了,必须搞一个自己的账户,如果使用已有账户的就不用说了,没有的话注册就可以了,但是注册过程很繁琐。

三、界面

3.1 书签窗口

书签窗口显示小伙伴们连接到的存储库。

  启动 Sourcetree 时出现的主窗口,在该窗口中,选择本地远程按钮以查看您计算机上的本地存储库或您可以克隆的远程存储库,如下图所示。其中过滤仓库搜索框其实就是个搜索框,可以根据仓库名字的关键字搜索出仓库,而单击 新建 按钮以获取更多用于连接或创建新存储库的选项。右上角的设置按钮比较简单,这里就不再解释大家自行点开一下就明白了。
在这里插入图片描述

  这几个新建下的操作下面会有具体操作来详细阐释整个使用过程,这里就不再多说来。

3.2 工具栏界面

工具栏是在不使用命令行的情况下采取行动的地方。

  当小伙伴使用 Sourcetree 打开存储库时,就会看到此工具栏,工具栏提供了通常在命令行中完成的各种选项。随便双击打开主页中的一个项目,在 SourceTree界面点击文件状态,会看到刚才添加的项目。

在这里插入图片描述

当项目中文件内否有所改变时 就会显示在此
在这里插入图片描述

点击未暂存文件,回到已暂存文件中,意思是我们允许提交到仓库,现在就可以提交至远程仓库,例如GitHub仓库。
在这里插入图片描述

页面中的几个按钮,作用如下表所示:

按钮 说明
提交:Commit 指本地仓库的文件提交到本地仓库保存
拉取:Pull 从关联账号的托管平台(比如github)的众多远程仓库中下载一个仓库到本地,前提是账号里创建的有仓库
推送:Push 将本地仓库源文件提交到本地并更新到托管平台的远程仓库中
抓取:Fetch 从远程仓库抓取本仓库的更新内容并更新到本地仓库
分支: branc 基于一个分支,建立自己的本地分支
合并:merge 合并其他分支到自己的本地分支
暂存:git stash 存储当前工作区的变更
在finder中显示
设置

3.3 侧边栏

在存储库窗口中,侧边栏提供对有关当前存储库的关键信息的访问。

当小伙伴使用 Sourcetree 打开存储库时,就会看到此侧边栏。侧边栏为存储库的当前工作区、可用分支、远程分支和标签等提供选项。

分类 选项 说明
工作区
文件状态
历史 1、可以查看存储库的完整历史记录
2、在此视图中选择多个提交时,您将能够查看在这些提交之间所做的更改。
搜索
分支
标签
远端
已贮藏
子模块
子树

四、基础操作

4.1 拉取远程仓库

  1. 打开SourceTree软件,选择新建-从URL克隆,如下图所示。
    在这里插入图片描述

  2. 输入远程仓库的https地址,第一次会要你输入账号密码,填入远程仓库注册的账号密码即可。点击‘克隆’之后,这里sourceTree会自动在‘目标路径’下创建一个文件夹本地创建一个文件夹
    在这里插入图片描述

  3. 完成

4.2 连接远程仓库

要将存储库添加到 Sourcetree,小伙伴们请使用 Bitbucket 或 Github 帐户登录。您可以将多个帐户添加到 Sourcetree。

  1. 单击齿轮图标并选择 帐户
    在这里插入图片描述

  2. 单击 帐户选项卡中的添加

  3. 选择主机后,输入您的主机详细信息。如果您选择了BitbucketGitHub,请保留默认的授权类型并单击链接账号以输入您的凭据。当您输入您的帐户详细信息时,您可以选择是更喜欢使用 HTTPS 还是 SSH 连接。
    在这里插入图片描述

4.3 克隆远程存储库

如果小伙伴们在 Bitbucket 或 Github 上已有远程存储库,则需要将其复制或克隆到您的计算机上。

  1. 在 SourceTree 中,单击 远程。您的所有远程项目都会显示。
  2. 单击 要在本地克隆的存储库旁边的克隆。
  3. 克隆存储库 窗口中,单击 克隆。单击本地以查看克隆存储库的列表。

4.4 创建本地存储库

如果您刚刚开始,小伙伴们可以从 Sourcetree 在本地创建一个存储库,否则可以跳过此步骤。

  1. 单击 新建,然后选择 创建本地存储库
  2. 输入目标路径和存储库名称,然后单击 创建

4.5 添加现有的本地存储库

如果您已经有一个存储库,您可以在 SourceTree 中查看它。

  1. 单击 新建,然后 单击添加现有本地存储库
  2. 选择希望添加的存储库,然后单击 Open,添加的存储库出现在 Local下。

4.6 pull操作

  pull拉取远程代码到本地(将同组小伙伴儿提交的代码先拉到本地,再开发,防止冲突),直接点击操作区的拉取按钮即可将代码拉取,如果有需要拉取的内容会显示数字。

  1. 在 SourceTree 中的存储库中,单击 Pull 按钮。将出现一个弹出窗口,表明您正在将文件从 Bitbucket 合并到本地存储库。
  2. 此弹出窗口中单击 “确定”。
  3. 导航到本地系统上的存储库文件夹,您将看到刚刚添加的文件。 SourceTree 在您的历史视图中使用新文件进行更新。

4.7 commit操作

Commit提交自己写的代码到分支,即将暂存文件上传到本地仓库。

在项目没有任务修改时(即跟远程仓库一致),如下图所示:
在这里插入图片描述

  接下来打开仓库中的工程,创建一个新的文件testCommit.txt,打开 Sourcetree 本地仓库查看,我们发现刚才的改动的文件显示到了为暂存文件区域,选中testCommit.txt 文件,预览代码直接显示在右边的区域类,若是在文件中修改了内容,预览代码区域则用绿色文字和+显示(如果是删除了这一行,会用红色文字和-)出修改内容。注:这里仅仅是新建一个问题,所以什么都没显示,如下图所示。
在这里插入图片描述

  选中未暂存文件前的复选框,保存修改文件到Sourcetree,准备提交。点击左上角的提交按钮,输入提交日志(强烈建议写上,用于以后区分每次提交的代码所修改的内容),勾选立即推送的话可以直接提交到远程仓库,最后提交右下角的提交,即可保存到本地仓库和远程仓库,如下图所示。
在这里插入图片描述

第一次提交会让输入账号密码

4.8 push操作

  文件提交成功后,首先会先提交至我们的本地仓库(如果下伙伴儿没有勾选立即托送变更的话),然后就可以在“ 历史记录” 选项卡下看到更改,在 Sourcetree 中,单击 Push 按钮将提交的代码推送到远程仓库。
在这里插入图片描述

在出现的对话框中的列中,选择要推送更改的分支,然后单击 确定

在这里插入图片描述

注意:如果有待拉取内容,一定要先拉取再提交/推送,避免代码冲突

五、分支管理与使用

5.1 分支介绍

类型 说明
master 最终发布版本,整个项目中有且只有一个
develop 项目的开发分支,原则上项目中有且只有一个
feature 功能分支,用于开发一个新的功能
release 预发布版本,介于develop和master之间的一个版本,主要用于测试
hotfix 修复补丁,用于修复master上的bug,直接作用于master

  当开发中需要增加一个新的功能时,可新建feature分支,用于增加新功能,并且不影响开发中的develop源码,当新功能增加完成后,完成feature分支,将新功能合并到develop中,更新develop上的代码。
在这里插入图片描述

5.2 新建分支

  项目克隆完成之后,我们拉取的是 master 分支上的代码,由于 master 分支是主分支,项目多人开发的情况下,很容易造成冲突。所以我们一般会先新建一个自己的分支。首先在 Sourcetree 中,单击 分支 按钮。而后在“ 新分支” 字段中,输入分支的名称,点击 创建分支

  1. 在master基础上创建分支v1.0.1,如下图所示。

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

  1. 这样一条分支就创建了,创建完成后在左侧“历史”视图中就会出现,双击可以切换当前分支,在 master 分支改了代码,切换到新创建分支的时候不会出现 master 上改的代码,两者互不影响,只有在开发完了,提交推送合并分支的时候生效,所以本地开发要注意当前分支。

  2. 切换至v1.0.1然后推送分支到远程服务器
    在这里插入图片描述

    在这里插入图片描述

  3. 查看远端已经发现有v1.0.1

在这里插入图片描述

5.3 合并分支

如果功能分支落后 master,可以使用合并将该分支同步到您的功能分支中。

  将两个分支的代码合并,比如主分支是 master,然后在 v1.0.1 分支进行开发,开发完成后需要保持 master 是最新版本,所以需要将 v1.0.1 分支合并到 master。

  1. 切换至master主分支,拉取v1.0.1并合并至master主分支。
    在这里插入图片描述

  2. 单击 合并 按钮,从出现的弹出窗口中,选择要合并到功能分支中的提交。
    在这里插入图片描述

  3. 推送分支到远程服务器
    在这里插入图片描述
    在这里插入图片描述

  4. 单击 合并 按钮,从出现的弹出窗口中,选择要合并到功能分支中的提交,单击 确定
    在这里插入图片描述

  5. 将合并到master分支上的代码推送到远程服务器

  6. 合并完成后会有条记录,可以看到合并内容,这样两个分支的代码就合并到了master。

  1. 首先要切换到被合并的分支上,再进行合并操作。
  2. 分支合并时,可以选择具体的某提交进行合并,同时主分支可以合并到子分支;子分支可以合并到主分支;子分支之间也可以进行合并。
  3. 合并之前,保证各个分支中没有拉取或者需要提交的代码。

六、其他操作

6.1 冲突解决

  多人开发时,由于修改了同一个文件,可能会有文件冲突的情况。 拉取代码时,会有冲突提示,解决完相关的冲突文件,重新提交即可。可以在提交的时候先拉取代码,然后进行提交推送,可以解决冲突,如果拉取不下来可以先暂存再拉取,拉取完之后取消暂存,再删掉冲突代码,然后推送。如果代码有冲突,在代码上下文会出现如下内容:
在这里插入图片描述
自己根绝实际情况解决掉冲突代码即可:

  • 查看冲突,可选择’暂存区块’或者选中某行后‘暂存行块’,或者‘放弃区块’或者选中某行后‘暂存行块’
    在这里插入图片描述

  • 通过菜单栏->动作->解决冲突,一般在冲突较多时候采取该方法
    在这里插入图片描述

6.2 版本回退

  原则上,代码推送之前要保证本地的代码可运行,不要将不可运行或者有问题的代码推送到服务器上。如果由于误操作,将代码推送到了远程,想重新修改上传代码,这需要将版本进行回退。当我们提交代码到仓库后,如果想回滚到上次提交的状态时,选中左边的"历史"–>选中你要回滚的提交区块,点击右边的"回滚区块按钮",点击后,什么也不用做,直接用打开本地仓库文件中的项目查看,那行代码就消失了,即回滚成功。

在这里插入图片描述

6.3 代码变更溯源

这个功能是此软件最好的点,至少我觉得,不接受任何反驳。

工作时,我们经常会想要查看一个类文件的变更历史,最常见的场景是:“卧槽,谁改了我的代码”。

  1. 选择 ①文件状态 -> ②搜索文件 -> ③查看选中的修改日志
    在这里插入图片描述

  2. 如此可以看到所有改动到该文件的commit(是按时间顺序排列)
    在这里插入图片描述

6.4 集成 gitee

mac上sourcetree 无法推送代码至远程仓库,总是提示“ Incorrect username or password”

在这里插入图片描述

  其实解决方法很是简单,首先点击工具栏中的“设置”,然后选择“远程仓库”标签,接下来选中路径,而后点击下面的“编辑”按钮,编辑URL/路径。例如当前URL是https://gitee.com/project/my-project.git,使用的用户登录账号是zhangsan,其对应的密码是123456,那么添加用户名和密码后的URL则显示成http://zhangsan:[email protected]:10098/project/my-project.git,将其保存就足够了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/duleilewuhen/article/details/123969687

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签