天天看点

工具篇-Git版本管理工具Sourcetree

导语

正所谓:“工欲善其事,必先利其器”,一款好的工具可以提高你的工作效率以致事倍功半的作用,所以如何利用好工具,成为每个开发工程师的必备技能。

简介

Sourcetree是一款Git的可视化图形管理界面,提供了Windows和Mac的免费Git客户端,很方便的管理项目的代码版本。

安装

官网下载工具

  • 在安装Sourcetree之前需要先确认安装Git。
  • 按照指定的安装流程,正确安装Sourcetree。
  • 本文章使用的Window版本的客户端。
  • 注意 :使用Sourcetree之前,需要注册用户才可以使用。因为网络的原因,可能需要翻墙或者验证注册的邮件会延迟才会收到【翻墙】。

场景

参考教程 Sourcetree的操作使用

工作中可能会遇到一下的一些问题:

  • 多个分支,怎么切换分支与合并代码?
  • 多人团队提交代码,有冲突时改如何处理?
  • 代码需要回溯到版本,恢复到某个记录?
  • 开发测试完某个功能点后,需要发布生产环境的代码,怎么只合并该部分的代码到生产环境的分支?

接下来,让我们开始使用Sourcetree解决以上一些问题。

准备工作

准备一个Git项目,该项目有三个代码分支dev、test、master,对应着开发环境、测试环境、生产环境。

1、新打开一个New tab标签页,选择Clone,输入你的远程代码地址,点击克隆,等待下载项目代码。

2、下载完项目代码,初始化项目。

3、基本的使用

  1. 修改README.md文件。
  2. 打开Sourcetree》文件状态》工作副本》未暂存文件,显示已修复的文件diff对比。
  3. 未暂存文件》暂存所选/所有》已暂存所有,这时候准备好提交代码。
  4. 填写提交记录,点击推送即可推送代码到远程仓库。
  5. 其它的一些操作,如获取,拉取,推送代码按照界面操作即可,简单方便。

回到之前的几个问题,怎么解决?

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