SourceTree教程

11/28/2020 开发工具

Typora是一款轻便简洁的Markdown编辑器,支持即时渲染技术,这也是与其他Markdown编辑器最显著的区别。 即时渲染使得你写Markdown就想是写Word文档一样流畅自如,不像其他编辑器的有编辑栏和显示栏。

# SourceTree安装教程

作为程序员,不可避免的要在github上查询代码,而在企业项目中,为了使得项目好管理需要使用项目管理客户端,所以接下来详细讲解一下基于git的sourceTree在windows系统下的安装及与GitHub上的账号进行远程连接同步更新的过程。

由于sourceTree的安装过程中有内嵌git的安装,所以我们不需要单独到git的官方网站上去下载安装git,直接通过sourceTree的安装来安装git。

# 下载地址

​ 首先,下载对应系统的sourceTree。直接进入官网 下载 (opens new window)

​ by the way! 我觉得你上手sourceTree的同时,应该要熟练一些基本的git操作,这里推荐一个链接:git-简明指南 (opens new window)

  • 下载过程很漫长

# 安装流程

1.解压后双击

2.出现这个情况时进入 设置-->安全性与隐私-->点击仍要打开

3.主要说一下账户这一步,这一步跳过不了,必须搞一个自己的账户,如果使用已有账户的就不用说了(网上有朋友说可以使用github账户,不过我试了一下,好像并不能成功,大家也可以尝试一下),没有的话注册就可以了,但是注册过程很繁琐

  • 没有账户的小伙伴可以点击后面的"转到我的Atlassian"

# 点击注册

  • 按要求填写账号密码,可是你发现填完了注册按钮不能点击有木有?!?!

  • 这还不让人注册了还,经过我的调查发现,这里需要用梯子...

    因此刷出来的界面长这样,其中人机身份验证又跟12306的验证码一样,要验证一下你到底是不是人,大家一看都懂,我就不啰嗦了

  • (注册成功的跳过这一步------)如果大家通过这种方法注册过程中遇到各种问题没有注册成功,请尝试另一种方法用谷歌邮箱(也要梯子),跳到注册主页,然后注册google邮箱,用google邮箱登录,这样的注册方式我觉得更友善一些

  • 登录成功后需要一些基本设置,建议在这就直接写好

# SourceTree的进阶使用

# 一. 提交回滚

SourceTree比起tortoiseGit来,最大的不同之处在于 Sourcetree支持文件的部分提交,这大大方便了用户的使用。

​ 有的时候,我们开发了一个A功能,未上线,同时又并发开发了B功能,B功能比A功能先上线,而且B功能和A功能修改的是同一个文件,这种情况在上线B功能时,SourceTree就体现出优势了。

# 方法/步骤

  1. 打开本地工作副本,增加文件activityServiceImpl.java,这个文件没啥特别,就是代码行数很多,方便演示。

    SourceTree使用教程(五)

  2. 打开SourceTree,推送该文件。

    SourceTree使用教程(五)

  3. 打开新增文件,新增func1,func2,func3三个功能,

    SourceTree使用教程(五)

  4. 现在的要求是,只提交func3,不提交func1和func2。打开sourceTree。如下图

    SourceTree使用教程(五)

  5. 右边区域滑到add func3处,点击暂存区块,该区块就会保存到待提交区。

    SourceTree使用教程(五)

  6. 已暂存文件里是待提交的,未暂存文件里不需要提交的,这样在一个文件里,就可以提交需要提交的,而不需要提交的也可以保留在工作区,等待下次提交

    SourceTree使用教程(五)

  7. 提交推送,如下图。

    SourceTree使用教程(五)

  8. 撤销回滚。在团队协作开发中,有时候提交完代码后,发现提交错了,这个时候,撤销回滚就起了重要作用。

    在最新的提交记录上,右键-》回滚提交

    SourceTree使用教程(五)

  9. 在弹窗里选择是。

    SourceTree使用教程(五)

  10. 可以看到提交历史记录多了一个Revert 反向提交

    SourceTree使用教程(五)

  11. 打开本地工作副本,看到 做的修改已去除

    SourceTree使用教程(五)

  12. 这个时候,反向提交只提到了本地仓库,如需撤销远程仓库的,还需推送到远程仓库

    SourceTree使用教程(五)

  13. 点击推送,可以看到提交的func3已撤销。如下图。

    SourceTree使用教程(五)

注意事项

  • 撤销回滚只能撤销回滚最近的一次提交,并不能回滚到历史某个提交

# 二.回滚版本到某次提交

在上面中讲到了提交的撤销回滚,并且注明这个撤销回滚只能撤销回滚最新的提交记录,并不能回滚到某个历史版本。但是实际使用场景中肯定会遇到需要回退到某个提交的,而不仅仅是最新的提交。以下将讲述如何使用SourceTree来回退代码到某次提交。

# 方法/步骤

  1. 打开sourceTree,切换到开发分支

    SourceTree使用教程(六)--回滚版本到某次提交

  2. 打开本地工作副本test1.txt文件,编辑新增 add test1

    SourceTree使用教程(六)--回滚版本到某次提交

  3. 提交并推送本次新增到远程仓库

    SourceTree使用教程(六)--回滚版本到某次提交

  4. 打开本地工作副本test1.txt文件,编辑新增 add test2

    SourceTree使用教程(六)--回滚版本到某次提交

  5. 提交并推送本次修改到远程仓库,可以看到最新的历史记录在本地仓库和远程仓库都已有了新增test1和新增test2

    SourceTree使用教程(六)--回滚版本到某次提交

  6. 如果这个时候突然发现前面的两次提交是错误的,现在想回到“提取release分支的某次提交到develop分支”这个版本。有两种解决方式,第一种是删除掉新增test1和新增test2两次提交所加的内容,但是这有个前提,是修改内容很少的情况下才可以采用此方法,否则会陷入无穷无尽的代码比对泥沼。那么第二种方式就是该教程将要讲述的。回退到某个历史版本。

    SourceTree使用教程(六)--回滚版本到某次提交

  7. 切换到sourceTree界面,打开develop分支的日志/历史,鼠标选中将要回退到的那个历史提交记录

    SourceTree使用教程(六)--回滚版本到某次提交

  8. 右键-》重置当前分支到此次提交

    SourceTree使用教程(六)--回滚版本到某次提交

  9. 在弹窗中 使用模式选择 强行合并--丢弃所有改动过的工作副本,点击确定

    SourceTree使用教程(六)--回滚版本到某次提交

  10. 等待重置完,可以看到本地仓库的develop分支已回退到 “提取 release分支的某次提交到 develop分支”提交。而且本地仓库落后远程仓库两个提交记录。

    SourceTree使用教程(六)--回滚版本到某次提交

  11. 依然是同样的操作。选中最新的提交历史记录,右键-》重置当前分支到此次提交

    SourceTree使用教程(六)--回滚版本到某次提交

  12. 这次选的使用模式是软合并 – 保持所有本地改动,点击确定

    SourceTree使用教程(六)--回滚版本到某次提交

  13. 等待重置完。发现本地仓库开发分支已和远程仓库开发分支同步。这个结果似乎看起来两次重置抵消了一样,代码版本没有发生任何的变化。实际并不是这样,这就是神奇之处,会让你恍然大悟的地方。

    SourceTree使用教程(六)--回滚版本到某次提交

  14. 切换到文件状态,可以看到本地工作副本多了一个test1.txt的改动文件,而且改动文件的内容正好删除了 新增test1和新增test2两次提交所修改的内容。

    SourceTree使用教程(六)--回滚版本到某次提交

  15. 那么,剩下的操作只需将这个改动文件提交并推送到远程仓库,是不是就OK了?

    下面尝试,提交并推送该改动文件。如下图,推送之后的效果。

    SourceTree使用教程(六)--回滚版本到某次提交

  16. 如下图,可以看出本地工作副本和远程仓库的 add test1 和 add test2内容都被回退掉了。也就是代码版本从内容上回退到了某个历史版本,但是提交历史记录并没有回退。Git只会增加提交历史记录,是不会回退或删除提交记录的。我们所说的回退都是指的回退内容。

    SourceTree使用教程(六)--回滚版本到某次提交

注意事项

  • 回退指的是内容的回退,而不是提交记录的回退

# 三.解决冲突

# 简单介绍

1、冲突文件的符号为“感叹号” 2、选中“冲突文件”,右键——点击”解决冲突“——点击”打开外部合并工具“(备注:才操作时已经安装外部合并工具,同时在sourcetree中已经进行配置,详见”集成文件对比插件“)

# 冲突界面

冲突解决界面如下:可以根据需要选择内容显示类型,只”显示更改“,”显示冲突“或者”全部“

# 解决冲突

方法一:在相关的版本处,选中”冲突行”,合并区默认处于合并位置,鼠标右键,选择最终冲突地方留下的内容,如图:

解决冲突之后效果图:

1、冲突图标由”感叹号”——“省略号”。 2、右侧显示修改后的代码进行查看。

3、同时修改的冲突文件有相应的备份,大家可以下载到本地,方便冲突有问题再次修改文件。 备注:该文件下载之后请将版本库中的该文件删除,不要上传到版本库中。 4、修改完冲突之后,需要再次提交,推送。大家养成提交时,提交有效的日志信息,不要将比如:123之类的信息推送到服务器中。 方法二:如果冲突非常少,可以直接在右侧栏中解决冲突,如图所示:

1、点击未暂存区域的冲突文件。 2、右侧列表中出现冲突的内容。 3、选择冲突内容,解决冲突,如图所示:

暂存行:表示保留该内容 丢弃行:表示删除该内容 备注:区分于第一种方式,使用第一种方法解决时,不要点击”未暂存文件”,否则可能无法打开冲突文件

# 相关提示信息含义

# 冲突信息

# 先更新信息

如果推送时,拉取右上方显示数字,则需要先拉取再推送。

# 四.合并某次提交

在Git的实际使用场景中,未必都是很规矩的拉一个分支,开发一个功能,等功能测试完成后,合并到主分支。有很多的场景都是很多人在同一个开发分支上开发,然后按照上线的实际需要,依次去上传自己的功能模块,这个功能模块的提交记录很可能是交叉提交的,那么这时候如何去只合并一个功能到主分支呢?或者是说怎么使用sourceTree去合并某次或某几次(不连续)提交到另一个分支?

# 方法/步骤

打开sourceTree,切换到develop分支

SourceTree使用教程(七)--合并某次提交

打开本地工作副本,新增test2.txt文件,并编辑 add func1内容

SourceTree使用教程(七)--合并某次提交

提交并推送这次新增到远程仓库

SourceTree使用教程(七)--合并某次提交

打开本地工作副本,编辑test2.txt文件,新增 add func2

SourceTree使用教程(七)--合并某次提交

提交并推送这次修改内容,执行完成后,如下图所示

SourceTree使用教程(七)--合并某次提交

现在test2.txt文件 新增的 func1功能由于测试通过,需要先上线,合并到master分支。也就是要合并 新增test2.txt文件 add func1 的提交到master,而不动“新增func2”的提交。

切换到master分支,可以看到master分支落后 develop分支好多版本了,test2.txt文件对于master分支完全是新增文件,所以待会合并某次提交到master分支的时候,应该不会产生冲突的。下面关键的操作来了。

SourceTree使用教程(七)--合并某次提交

将当前分支切换到所有分支,如下图红框内

SourceTree使用教程(七)--合并某次提交

选择待合并的提交记录,右键 – 》遴选

SourceTree使用教程(七)--合并某次提交

在确认遴选的弹窗中点击是。

SourceTree使用教程(七)--合并某次提交

执行完后。切换到当前分支,可以看到master分支的本地仓库多了一个” 新增test2.txt文件 add func1” 的提交历史记录。执行的过程中果然是没有遇到冲突

SourceTree使用教程(七)--合并某次提交

推送该次合并到master分支的远程仓库。这样就完成了,合并某次提交到另一分支的操作。

SourceTree使用教程(七)--合并某次提交

# 五.文件修改与删除

你已经在本地修改完毕之后,这时你打开文件状态可进行修改或删除,如图:

强调:如果点丢弃,那么你当前的修改就会被回退,如果点移除,你的整个文件会被直接删掉,所以要小心

# 六.贮藏功能

如果你修改完毕但是你并不急着上传分支,这个时候你可以将修改的文件进行贮藏,尤其是切换分支的时候可以将其先进行贮藏,不影响切换分支的使用,如下:

当你再次回到原始工作时,你可以找到贮藏的位置,进行释放,他就会归位了,如图:

OK,sourceTree 教程就讲到这里,有错误的地方还请指出,谢谢!

Last Updated: 12/1/2020, 2:47:16 PM