一、基本介绍
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 安装
-
登录Sourcetree官网 : https://www.sourcetreeapp.com/,点击Download for Mac OS X,即开始自动下载,大约60M,稍微等待即可。 -
下载完成后双击软件安装包,若是出现【Sourcetree 已损坏,无法打开,因为无法确认开发者的身份】,这是 macOS 启用了新的安全机制的问题,苹果默认是只允许安装自家【App Store】来源的应用,如果你想安装第三方的应用,那么需要在【系统偏 好设置 -> 安全性与隐私 -> 通用】中点击【仍要打开】选项。 -
拖动Sourcetree到Applications中 -
打开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 拉取远程仓库
-
打开SourceTree软件,选择新建-从URL克隆,如下图所示。 -
输入远程仓库的https地址,第一次会要你输入账号密码,填入远程仓库注册的账号密码即可。点击‘克隆’之后,这里sourceTree会自动在‘目标路径’下创建一个文件夹本地创建一个文件夹 -
完成
4.2 连接远程仓库
要将存储库添加到 Sourcetree,小伙伴们请使用 Bitbucket 或 Github 帐户登录。您可以将多个帐户添加到 Sourcetree。
-
单击齿轮图标并选择 帐户 -
单击 帐户选项卡中的添加 。 -
选择主机后,输入您的主机详细信息。如果您选择了Bitbucket或GitHub,请保留默认的授权类型并单击链接账号以输入您的凭据。当您输入您的帐户详细信息时,您可以选择是更喜欢使用 HTTPS 还是 SSH 连接。
4.3 克隆远程存储库
如果小伙伴们在 Bitbucket 或 Github 上已有远程存储库,则需要将其复制或克隆到您的计算机上。
- 在 SourceTree 中,单击 远程。您的所有远程项目都会显示。
- 单击 要在本地克隆的存储库旁边的克隆。
- 在 克隆存储库 窗口中,单击 克隆。单击本地以查看克隆存储库的列表。
4.4 创建本地存储库
如果您刚刚开始,小伙伴们可以从 Sourcetree 在本地创建一个存储库,否则可以跳过此步骤。
- 单击 新建,然后选择 创建本地存储库。
- 输入目标路径和存储库名称,然后单击 创建。
4.5 添加现有的本地存储库
如果您已经有一个存储库,您可以在 SourceTree 中查看它。
- 单击 新建,然后 单击添加现有本地存储库。
- 选择希望添加的存储库,然后单击 Open,添加的存储库出现在 Local下。
4.6 pull操作
??pull拉取远程代码到本地(将同组小伙伴儿提交的代码先拉到本地,再开发,防止冲突),直接点击操作区的拉取按钮即可将代码拉取,如果有需要拉取的内容会显示数字。
- 在 SourceTree 中的存储库中,单击 Pull 按钮。将出现一个弹出窗口,表明您正在将文件从 Bitbucket 合并到本地存储库。
- 此弹出窗口中单击 “确定”。
- 导航到本地系统上的存储库文件夹,您将看到刚刚添加的文件。 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 中,单击 分支 按钮。而后在“ 新分支” 字段中,输入分支的名称,点击 创建分支。
- 在master基础上创建分支v1.0.1,如下图所示。
-
这样一条分支就创建了,创建完成后在左侧“历史”视图中就会出现,双击可以切换当前分支,在 master 分支改了代码,切换到新创建分支的时候不会出现 master 上改的代码,两者互不影响,只有在开发完了,提交推送合并分支的时候生效,所以本地开发要注意当前分支。 -
切换至v1.0.1然后推送分支到远程服务器 -
查看远端已经发现有v1.0.1
5.3 合并分支
如果功能分支落后 master ,可以使用合并将该分支同步到您的功能分支中。
??将两个分支的代码合并,比如主分支是 master,然后在 v1.0.1 分支进行开发,开发完成后需要保持 master 是最新版本,所以需要将 v1.0.1 分支合并到 master。
-
切换至master主分支,拉取v1.0.1并合并至master主分支。 -
单击 合并 按钮,从出现的弹出窗口中,选择要合并到功能分支中的提交。 -
推送分支到远程服务器 -
单击 合并 按钮,从出现的弹出窗口中,选择要合并到功能分支中的提交,单击 确定。 -
将合并到master分支上的代码推送到远程服务器 -
合并完成后会有条记录,可以看到合并内容,这样两个分支的代码就合并到了master。
- 首先要切换到被合并的分支上,再进行合并操作。
- 分支合并时,可以选择具体的某提交进行合并,同时主分支可以合并到子分支;子分支可以合并到主分支;子分支之间也可以进行合并。
- 合并之前,保证各个分支中没有拉取或者需要提交的代码。
六、其他操作
6.1 冲突解决
??多人开发时,由于修改了同一个文件,可能会有文件冲突的情况。 拉取代码时,会有冲突提示,解决完相关的冲突文件,重新提交即可。可以在提交的时候先拉取代码,然后进行提交推送,可以解决冲突,如果拉取不下来可以先暂存再拉取,拉取完之后取消暂存,再删掉冲突代码,然后推送。如果代码有冲突,在代码上下文会出现如下内容: 自己根绝实际情况解决掉冲突代码即可:
6.2 版本回退
??原则上,代码推送之前要保证本地的代码可运行,不要将不可运行或者有问题的代码推送到服务器上。如果由于误操作,将代码推送到了远程,想重新修改上传代码,这需要将版本进行回退。当我们提交代码到仓库后,如果想回滚到上次提交的状态时,选中左边的"历史"–>选中你要回滚的提交区块,点击右边的"回滚区块按钮",点击后,什么也不用做,直接用打开本地仓库文件中的项目查看,那行代码就消失了,即回滚成功。
6.3 代码变更溯源
这个功能是此软件最好的点,至少我觉得,不接受任何反驳。
工作时,我们经常会想要查看一个类文件的变更历史,最常见的场景是:“卧槽,谁改了我的代码”。
-
选择 ①文件状态 -> ②搜索文件 -> ③查看选中的修改日志 -
如此可以看到所有改动到该文件的commit(是按时间顺序排列)
6.4 集成 gitee
mac上sourcetree 无法推送代码至远程仓库,总是提示“ Incorrect username or password”
??其实解决方法很是简单,首先点击工具栏中的“设置”,然后选择“远程仓库”标签,接下来选中路径,而后点击下面的“编辑”按钮,编辑URL/路径。例如当前URL是https://gitee.com/project/my-project.git ,使用的用户登录账号是zhangsan,其对应的密码是123456,那么添加用户名和密码后的URL则显示成http://zhangsan:123456@12.34.98.43:10098/project/my-project.git ,将其保存就足够了。
|