导语
正所谓:“工欲善其事,必先利其器”,一款好的工具可以提高你的工作效率以致事倍功半的作用,所以如何利用好工具,成为每个开发工程师的必备技能。
简介
Sourcetree是一款Git的可视化图形管理界面,提供了Windows和Mac的免费Git客户端,很方便的管理项目的代码版本。
安装
官网下载工具
- 在安装Sourcetree之前需要先确认安装Git。
- 按照指定的安装流程,正确安装Sourcetree。
- 本文章使用的Window版本的客户端。
- 注意 :使用Sourcetree之前,需要注册用户才可以使用。因为网络的原因,可能需要翻墙或者验证注册的邮件会延迟才会收到【翻墙】。
场景
参考教程 Sourcetree的操作使用
工作中可能会遇到一下的一些问题:
- 多个分支,怎么切换分支与合并代码?
- 多人团队提交代码,有冲突时改如何处理?
- 代码需要回溯到版本,恢复到某个记录?
- 开发测试完某个功能点后,需要发布生产环境的代码,怎么只合并该部分的代码到生产环境的分支?
接下来,让我们开始使用Sourcetree解决以上一些问题。
准备工作
准备一个Git项目,该项目有三个代码分支dev、test、master,对应着开发环境、测试环境、生产环境。
1、新打开一个New tab标签页,选择Clone,输入你的远程代码地址,点击克隆,等待下载项目代码。
2、下载完项目代码,初始化项目。
3、基本的使用
- 修改README.md文件。
- 打开Sourcetree》文件状态》工作副本》未暂存文件,显示已修复的文件diff对比。
- 未暂存文件》暂存所选/所有》已暂存所有,这时候准备好提交代码。
- 填写提交记录,点击推送即可推送代码到远程仓库。
- 其它的一些操作,如获取,拉取,推送代码按照界面操作即可,简单方便。
回到之前的几个问题,怎么解决?
1、多个分支,怎么切换分支与合并代码? 一般来说,在dev分支上开发完成,合并到test分支测试,测试完成合并代码到master分支。
根据远程分支[origin/dev] [origin/test] [origin/master],将远程分支检出checkout到本地分支dev/test/master。 远程》选择dev分支》检出origin/dev
同理,origin/test分支一样的处理
切换分支:双击点击当前分支即可切换完成。
分支代码合并举例,dev分支代码开发完成,并已commit提交到dev分支。现在想将dev分支合并到test分支。
双击test,切换test分支》右击dev分支》合并dev至当前分支
确认合并完成
注:如果本地开发不想影响主分支,或者污染代码的话,可以切换出一个本地分支,开发完成之后将修改过的代码合并一起。
2、多人团队提交代码,有差异冲突时该如何处理?
Sourcetree在解决差异冲突方面做得不是很好,如果是直接覆盖差异冲突,则使用Sourcetree自带的差异处理功能即可。但是如果是复杂的差异冲突,则需要引入第三方工具,如BeyondCompare。
【注:如果是使用
webstorm、
idea等IDE开发工具的,解决冲突的功能更加的优秀,所以建议与Sourcetree结合使用】
简单的冲突解决dev分支合并到master分支,README.md文件冲突。
工作副本》未暂存文件》右击,解决冲突
看到三种解决冲突的办法:使用我的版本、使用他人版本、外部合并工具。
简单的冲突解决,在不影响代码功能的情况下,使用【使用我的版本】、【使用他人版本】来直接覆盖本地或者远程的代码。
复杂的冲突解决使用第三方工具,BeyondCompare
安装BeyondCompare
打开SourceTree->工具->选项->比较->外部差异对比合并->选择BeyondCompare。
使用教程参考下面两个教程
SourceTree + Beynod Compare解决Git冲突的方法
SourceTree使用教程(四)---冲突解决
3、代码需要重置回滚到版本,恢复到某个记录?
有时候代码提交错误,需要回溯到某个版本;或者线上某个功能报错,需要快速回溯到某个版本已解决稳定性版本的问题。那么这个时候就需要将代码回复到某个记录。
SourceTree的解决办法如下:
dev分支,最新的提交记录为“记录2”,回滚到“记录1”
选择需要合并的代码,如果在最新的记录回滚,则回滚到上一个提交记录。
4、开发测试完某个功能点后,需要发布生产环境的代码,怎么只合并该部分的代码到生产环境的分支?
test分支不全部合并,只需要将部分可上线的功能代码,合并到master。有些不熟悉Git使用的人会在不影响功能的前提下,直接修改本地原文件的代码【换行】;或者将本地test分支全覆盖本地的master分支的代码,找出需要更新文件,commit提交并push到origin/master分支。需要这些方法都可以解决问题,但是会造成一些问题,第一各分支代码不一致;第二操作不规范可能会造成代码冲突,第三一个一个的找文件,如果文件少还好,可以数量多的时候,工作量会大大地增加。
原理Git:git cherry-pick <commit id>
切换到master分支
选择需要合并的记录,右击,遴选
确认,如果有代码冲突,解决冲突,再提交代码即可。
总结
写到这里,陆陆续续的写了些在工作中比较常用的功能,还有很多不完善的地方,欢迎指出。
使用好一款优秀的工具,可以提高开发工程师的工作效率,提高团队与项目的工作进度。不过工具虽好,但是我们还是需要了解一些Git的底层原理与命令,知其然而知其所以然。工具与原理结合起来才能更好地提升知识的宽度与工作效率。
最后想说的是,好久没写文章了,有点生疏,重新捡起笔,养成好习惯。
千里之行,始于足下。
参考文档
- Sourcetree使用
- Git 常用操作总结
- 一个小时学会Git
- 常用 Git 命令清单
转载于:https://juejin.im/post/5c85fe3cf265da2db7185602