Sourcetree 是一款Windows 和Mac OS X 下免费的 SVN、Git 客户端,同时也是 Mercurial 和 Subversion 版本控制系统工具。Sourcetree 支持创建、克隆、提交、push、pull 和合并等操作。SourceTree 拥有一个精美简洁的界面,无需使用命令行,可以处理托管和本地存储库,主要依赖可视化界面操作,省去繁琐复杂不容易理解的终端命令,大大简化了开发者与代码库之间的 Git 操作方式,这对于那些不熟悉Git命令的开发者来说非常实用。
版本控制,也称为源代码控制,是跟踪和管理软件代码更改的做法。版本控制系统是帮助软件团队管理源代码随时间变化的软件工具。随着开发环境的加速,版本控制系统帮助软件团队更快、更智能地工作。它们对 DevOps 团队特别有用,因为它们可以帮助他们减少开发时间并增加成功部署,帮助高性能开发和团队繁荣发展。
版本控制软件跟踪对特殊数据库中代码的每一次修改。如果出现错误,开发人员可以倒流并比较早期版本的代码,以帮助修复错误,同时最大限度地减少对所有团队成员的干扰。
对于几乎所有的软件项目,源代码就像皇冠上的宝石——一种必须保护其价值的宝贵资产。对于大多数软件团队来说,源代码是开发人员通过仔细努力收集和提炼的关于问题域的宝贵知识和理解的存储库。在团队中工作的软件开发人员不断地编写新的源代码并更改现有的源代码,团队中的一位开发人员可能正在开发一项新功能,而另一位开发人员通过更改代码来修复不相关的错误,每个开发人员都可能对软件的某个部分所做的更改可能与另一位同时工作的开发人员所做的更改不兼容。此外,在所有软件开发中,任何更改都可能自行引入新的错误,并且新软件在经过测试之前不能被信任。版本控制可帮助团队解决此类问题,跟踪每个贡献者的每个单独更改,并帮助防止并发工作发生冲突。
良好的版本控制软件支持开发人员首选的工作流程,而不会强加一种特定的工作方式。理想情况下,它也适用于任何平台,而不是规定开发人员必须使用什么操作系统或工具链。出色的版本控制系统促进了对代码的流畅和持续的更改流程,而不是文件锁定的令人沮丧和笨拙的机制 - 以阻止其他开发人员的进展为代价为一个开发人员开了绿灯。
登录Sourcetree官网 : https://www.sourcetreeapp.com/,点击Download for Mac OS X,即开始自动下载,大约60M,稍微等待即可。
下载完成后双击软件安装包,若是出现【Sourcetree 已损坏,无法打开,因为无法确认开发者的身份】,这是 macOS 启用了新的安全机制的问题,苹果默认是只允许安装自家【App Store】来源的应用,如果你想安装第三方的应用,那么需要在【系统偏 好设置 -> 安全性与隐私 -> 通用】中点击【仍要打开】选项。
拖动Sourcetree到Applications中
打开SourceTree Mac版,弹出注册界面。这一步跳过不了,必须搞一个自己的账户,如果使用已有账户的就不用说了,没有的话注册就可以了,但是注册过程很繁琐。
书签窗口显示小伙伴们连接到的存储库。
启动 Sourcetree 时出现的主窗口,在该窗口中,选择本地或远程按钮以查看您计算机上的本地存储库或您可以克隆的远程存储库,如下图所示。其中过滤仓库搜索框其实就是个搜索框,可以根据仓库名字的关键字搜索出仓库,而单击 新建 按钮以获取更多用于连接或创建新存储库的选项。右上角的设置按钮比较简单,这里就不再解释大家自行点开一下就明白了。
这几个新建下的操作下面会有具体操作来详细阐释整个使用过程,这里就不再多说来。
工具栏是在不使用命令行的情况下采取行动的地方。
当小伙伴使用 Sourcetree 打开存储库时,就会看到此工具栏,工具栏提供了通常在命令行中完成的各种选项。随便双击打开主页中的一个项目,在 SourceTree界面点击文件状态,会看到刚才添加的项目。
当项目中文件内否有所改变时 就会显示在此
点击未暂存文件,回到已暂存文件中,意思是我们允许提交到仓库,现在就可以提交至远程仓库,例如GitHub仓库。
页面中的几个按钮,作用如下表所示:
按钮 | 说明 |
---|---|
提交:Commit | 指本地仓库的文件提交到本地仓库保存 |
拉取:Pull | 从关联账号的托管平台(比如github)的众多远程仓库中下载一个仓库到本地,前提是账号里创建的有仓库 |
推送:Push | 将本地仓库源文件提交到本地并更新到托管平台的远程仓库中 |
抓取:Fetch | 从远程仓库抓取本仓库的更新内容并更新到本地仓库 |
分支: branc | 基于一个分支,建立自己的本地分支 |
合并:merge | 合并其他分支到自己的本地分支 |
暂存:git stash | 存储当前工作区的变更 |
在finder中显示 | |
设置 |
在存储库窗口中,侧边栏提供对有关当前存储库的关键信息的访问。
当小伙伴使用 Sourcetree 打开存储库时,就会看到此侧边栏。侧边栏为存储库的当前工作区、可用分支、远程分支和标签等提供选项。
分类 | 选项 | 说明 |
---|---|---|
工作区 | ||
文件状态 | ||
历史 | 1、可以查看存储库的完整历史记录 2、在此视图中选择多个提交时,您将能够查看在这些提交之间所做的更改。 |
|
搜索 | ||
分支 | ||
标签 | ||
远端 | ||
已贮藏 | ||
子模块 | ||
子树 |
打开SourceTree软件,选择新建-从URL克隆,如下图所示。
输入远程仓库的https地址,第一次会要你输入账号密码,填入远程仓库注册的账号密码即可。点击‘克隆’之后,这里sourceTree会自动在‘目标路径’下创建一个文件夹本地创建一个文件夹
完成
要将存储库添加到 Sourcetree,小伙伴们请使用 Bitbucket 或 Github 帐户登录。您可以将多个帐户添加到 Sourcetree。
单击齿轮图标并选择 帐户
单击 帐户选项卡中的添加 。
选择主机后,输入您的主机详细信息。如果您选择了Bitbucket或GitHub,请保留默认的授权类型并单击链接账号以输入您的凭据。当您输入您的帐户详细信息时,您可以选择是更喜欢使用 HTTPS 还是 SSH 连接。
如果小伙伴们在 Bitbucket 或 Github 上已有远程存储库,则需要将其复制或克隆到您的计算机上。
如果您刚刚开始,小伙伴们可以从 Sourcetree 在本地创建一个存储库,否则可以跳过此步骤。
如果您已经有一个存储库,您可以在 SourceTree 中查看它。
pull拉取远程代码到本地(将同组小伙伴儿提交的代码先拉到本地,再开发,防止冲突),直接点击操作区的拉取按钮即可将代码拉取,如果有需要拉取的内容会显示数字。
Commit提交自己写的代码到分支,即将暂存文件上传到本地仓库。
在项目没有任务修改时(即跟远程仓库一致),如下图所示:
接下来打开仓库中的工程,创建一个新的文件testCommit.txt,打开 Sourcetree 本地仓库查看,我们发现刚才的改动的文件显示到了为暂存文件区域,选中testCommit.txt 文件,预览代码直接显示在右边的区域类,若是在文件中修改了内容,预览代码区域则用绿色文字和+显示(如果是删除了这一行,会用红色文字和-)出修改内容。注:这里仅仅是新建一个问题,所以什么都没显示,如下图所示。
选中未暂存文件前的复选框,保存修改文件到Sourcetree,准备提交。点击左上角的提交按钮,输入提交日志(强烈建议写上,用于以后区分每次提交的代码所修改的内容),勾选立即推送的话可以直接提交到远程仓库,最后提交右下角的提交,即可保存到本地仓库和远程仓库,如下图所示。
第一次提交会让输入账号密码
文件提交成功后,首先会先提交至我们的本地仓库(如果下伙伴儿没有勾选立即托送变更
的话),然后就可以在“ 历史记录” 选项卡下看到更改,在 Sourcetree 中,单击 Push 按钮将提交的代码推送到远程仓库。
在出现的对话框中的列中,选择要推送更改的分支,然后单击 确定。
注意:如果有待拉取内容,一定要先拉取再提交/推送,避免代码冲突
类型 | 说明 |
---|---|
master | 最终发布版本,整个项目中有且只有一个 |
develop | 项目的开发分支,原则上项目中有且只有一个 |
feature | 功能分支,用于开发一个新的功能 |
release | 预发布版本,介于develop和master之间的一个版本,主要用于测试 |
hotfix | 修复补丁,用于修复master上的bug,直接作用于master |
当开发中需要增加一个新的功能时,可新建feature分支,用于增加新功能,并且不影响开发中的develop源码,当新功能增加完成后,完成feature分支,将新功能合并到develop中,更新develop上的代码。
项目克隆完成之后,我们拉取的是 master 分支上的代码,由于 master 分支是主分支,项目多人开发的情况下,很容易造成冲突。所以我们一般会先新建一个自己的分支。首先在 Sourcetree 中,单击 分支 按钮。而后在“ 新分支” 字段中,输入分支的名称,点击 创建分支。
这样一条分支就创建了,创建完成后在左侧“历史”视图中就会出现,双击可以切换当前分支,在 master 分支改了代码,切换到新创建分支的时候不会出现 master 上改的代码,两者互不影响,只有在开发完了,提交推送合并分支的时候生效,所以本地开发要注意当前分支。
切换至v1.0.1然后推送分支到远程服务器
查看远端已经发现有v1.0.1
如果功能分支落后
master
,可以使用合并将该分支同步到您的功能分支中。
将两个分支的代码合并,比如主分支是 master,然后在 v1.0.1 分支进行开发,开发完成后需要保持 master 是最新版本,所以需要将 v1.0.1 分支合并到 master。
切换至master主分支,拉取v1.0.1并合并至master主分支。
单击 合并 按钮,从出现的弹出窗口中,选择要合并到功能分支中的提交。
推送分支到远程服务器
单击 合并 按钮,从出现的弹出窗口中,选择要合并到功能分支中的提交,单击 确定。
将合并到master分支上的代码推送到远程服务器
合并完成后会有条记录,可以看到合并内容,这样两个分支的代码就合并到了master。
- 首先要切换到被合并的分支上,再进行合并操作。
- 分支合并时,可以选择具体的某提交进行合并,同时主分支可以合并到子分支;子分支可以合并到主分支;子分支之间也可以进行合并。
- 合并之前,保证各个分支中没有拉取或者需要提交的代码。
多人开发时,由于修改了同一个文件,可能会有文件冲突的情况。 拉取代码时,会有冲突提示,解决完相关的冲突文件,重新提交即可。可以在提交的时候先拉取代码,然后进行提交推送,可以解决冲突,如果拉取不下来可以先暂存再拉取,拉取完之后取消暂存,再删掉冲突代码,然后推送。如果代码有冲突,在代码上下文会出现如下内容:
自己根绝实际情况解决掉冲突代码即可:
查看冲突,可选择’暂存区块’或者选中某行后‘暂存行块’,或者‘放弃区块’或者选中某行后‘暂存行块’
通过菜单栏->动作->解决冲突,一般在冲突较多时候采取该方法
原则上,代码推送之前要保证本地的代码可运行,不要将不可运行或者有问题的代码推送到服务器上。如果由于误操作,将代码推送到了远程,想重新修改上传代码,这需要将版本进行回退。当我们提交代码到仓库后,如果想回滚到上次提交的状态时,选中左边的"历史"–>选中你要回滚的提交区块,点击右边的"回滚区块按钮",点击后,什么也不用做,直接用打开本地仓库文件中的项目查看,那行代码就消失了,即回滚成功。
这个功能是此软件最好的点,至少我觉得,不接受任何反驳。
工作时,我们经常会想要查看一个类文件的变更历史,最常见的场景是:“卧槽,谁改了我的代码”。
选择 ①文件状态
-> ②搜索文件
-> ③查看选中的修改日志
如此可以看到所有改动到该文件的commit(是按时间顺序排列)
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
,将其保存就足够了。
文章浏览阅读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..._达梦数据库导入导出
文章浏览阅读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
文章浏览阅读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
文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输
文章浏览阅读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...
文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure
文章浏览阅读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++ 字符串分割
文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答
文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。
文章浏览阅读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怎么进入
文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf