SourceTree使用看这一篇就够了

1 篇文章 0 订阅
1 篇文章 0 订阅

 你梦想有一天成为git大师,然而面对复杂的git命令,你感觉TMD这我能记得住吗?你曾经羡慕从命令行敲git命令,才会更加炫酷,然而时间一长,TMD命令我有忘了。那么今天我介绍的这款工具会让你从git命令中解救出来,这就是git可视化工具SourcTree。

事实上Git的功能十分强大,而通过使用命令熟记每个逻辑是相对很困难的事情,工作这么年从来没有了解透git的全功能,只是会简单的pus,pull等。当然很多ide开发工具都有格式各样的Git插件,操作方法也各不相同。所以不如直接用不受ide限制的Git管理工具SourceTree,不管你是那种语言,使用哪个开发工具,都从根本上把Git管理从开发工具和繁琐的命令行中解放出来。

介绍

官网介绍

翻译过来:

Sourcetree简化了您与Git存储库的交互方式,因此您可以专注于编码。通过Sourcetree的简单Git GUI可视化和管理您的存储库。

欣赏一下git分支情况

 

这眼花缭乱的分支线,看着就懵了,其实都是分支进行创建,合并等带来的一个图谱,所有的操作都会记录到git里。本文我们介绍SourceTree的使用。

安装SourceTree

官网下载 www.sourcetreeapp.com/,这款软件是免费的,但是需要注册,登录授权;登录和授权这两个步骤没啥问题,但对于注册需要科学上网才能注册的了。至于如何跳过注册,网上搜一下,window版的是有的。Mac版的没有尝试过,自行网上搜索吧

添加仓库

输入仓库的URL

克隆成功后的界面

SourceTree常用操作介绍

  • 丢弃:放弃未暂缓区的所有修改(工作区中的修改不会添加到版本控制,就是修改的东西不想提交,就直接丢弃)
  • 移除:直接删除文件
  • 克隆(clone):从远程仓库URL加载创建一个与远程仓库一样的本地仓库
  • 提交(commit):将暂存文件上传到本地仓库(我们在Finder中对本地仓库做修改后一般都得先提交一次,再推送)
  • 检出(checkout):切换不同分支
  • 添加(add):添加文件到缓存区
  • 移除(remove):移除文件至缓存区
  • 暂存(git stash):保存工作现场
  • 重置(reset):回到最近添加(add)/提交(commit)状态
  • 合并(merge):将多个同名文件合并为一个文件,该文件包含多个同名文件的所有内容,相同内容抵消
  • 抓取(fetch):从远程仓库获取信息并同步至本地仓库
  • 拉取(pull):从远程仓库获取信息并同步至本地仓库,并且自动执行合并(merge)操作,即 pull=fetch+merge
  • 推送(push):将本地仓库同步至远程仓库,一般推送(push)前先拉取(pull)一次,确保一致
  • 分支(branch):创建/修改/删除分枝
  • 标签(tag):给项目增添标签
  • 工作流(Git Flow):团队工作时,每个人创建属于自己的分枝(branch),确定无误后提交到master分枝
  • 终端(terminal):可以输入git命令行

SourceTree的git-flow

GIT-flow介绍

Git 作为源码管理系统,不可避免涉及到多人协作。团队中商定一个工作流程至关重要的。本文已常用的Git flow 做说明,该模型如下图所示:这张很经典的图片一定要在脑海中记住,这才说明你了解了git

模型图

说明:

该模型总存在两个长期(核心)分支

  • master
  • develop

master ,我们认为该分支存放对外发布的版本,任何时候该分支都是稳定的发布版。我们不可以直接在该分支push 代码。

develop ,我们认为该分支的代码存放的是达到稳定并且准备发布时的,我们的新功能开发都是基于此分支。

其次,项目存在的三种短期分支:

  • feature
  • hotfix
  • release

feature ,即功能分支,我们进行新功能的开发将在此分支上进行。该分支的代码基于develop 并且最终回合并回develop 分支。

hoxtfix , 即补丁分支,我们进行线上问题修复将在此分支进行,该代码分支基于master 并且最终将合并会develop、master 分支。

release, 即预发分支。

操作流程实例

当我们进行新功能开发时,需要基于develop分支拉取feature分支进行开发,如增加了一个功能 我们将基于develop分支创建 feature/news 分支。

当功能开发完毕时,我们将提交merge request,将该功能合并到develop 分支。

当所有feature 功能开发完毕,且都已合并回develop,开发自己测试完毕后。准备创建预发布版本,就可以基于develop创建release分支。此时测试人员可以基于该版本release进行测试,发现了问题,我们在release分支上进行问题的修复。

当具备上线条件时,需要将release分支合并到master和develop分支,同时需要打tag,然后进行上线操作,线上发布的为master分支。

当需要修复线上bug时,我们需要基于master创建hotfix分支,当修复且验证完毕后,将hotfix分支合并回master分支,同时为了保证该hotfix包含在下一个发行版中,同时需要合并回develop分支,同时需要打tag。最后删除hotfix分支。

SourceTree的流程

仓库-->git-flow->初始化仓库

每个客户端都需要进行初始化仓库,本地按照git-flow进行。进行初始化的作用就是按照上文提到的既定的标准流程初始化库。

点击初始化会弹出这个页面,看到下面的分支完全遵循上面介绍的流程

当初始化仓库之后,就可以按照gitflow的标准操作去执行了。选择下一个操作,会给出建议操作。

建立新的功能:新建feature分支

完成功能:当在功能分支上完成开发后,点击完成功能,就会把当前feature分支合并到develop分支。

建立新的发布版本:新建realse版本

完成发布版本:完成之后,会合并到develop分支和master分支

建立新的修复补丁:以mater分支为基础,新建hotfix分支。

完成修复补丁:完成修复补丁,会同步到master和develop分支。

问题:

完成功能分支的时候,出现了完成功能分支没有下拉项。这个很是苦恼。

抓取、获取分支信息fetch

抓取( Mac 下 的名字)获取( Windows 下的名字)指获取服务端 Git 库的变更信息,比如落后几个版本,超前几个版本,我们平常多人协作的项目,提交代码前需要先获取一下,如果服务端有新的提交,再拉取下别人的更改,可以减少代码冲突。

拉取代码

拉取代码是把远程分支的代码拉取到本地,会和本地代码进行合并,如果有冲突,则会提示冲突

提交代码

修改了本地代码,需要进行提交,如下图所示:

点击提交按钮后,进入到提交页面。提交页面可以分为几个区域

左侧区域,文件区域,变更区域,底部区域。其中文件区域的展示根据设置不同可以有不同展示。

文件区域设置。一般情况下 使用分体暂存视图更清晰。

提交流程:

1、将未暂存的文件选中,就会直接把文件放到已暂存文件区域

2、在下方文本框输入本次代码变动的说明

3、SourceTree默认不会推送到远程仓库,打勾会推送变更到origin(底部栏)

其它细节点

在变更区域,会显示本次变更的内容。其中+代表本次增加行;-代表本次删除行;前面2个行号依次代表变更前行号,变更后的行号

可以取消暂存区块。sourcetree 会把所有的变更以区块来分组,所以如果是整个区块的变更都没有意义,可直接丢弃整个块

选择修改的地方,操作按钮会变成,取消暂存行

储藏代码

可以将本地修改的代码,先进行缓存。这种一般情况下是拉取远程代码有问题的时候,为了防止冲突,先把本地代码进行储存,然后拉取远程代码,在应用储藏区即可。

新开分支

在项目中,我们可能分为开发分支、集成分支、生成环境分支等,这时我们只需要在某个节点上右键选择分支即可

推送分支

新开的分支不会在远程显示,所以需要将分支推送到远程。

切换分支

双击分支即可切换分支。

拉取远程分支

1、在远程分支右键,选择从origin拉取即可,获取远程分支

回滚提交

有些时候,我们提交的代码有问题,需要回滚回去。

回滚某次提交

将某次变更(在sourcetree里是某个节点)右键选择回滚提交。

回滚文件

回滚行

忽略文件

项目中,有一些文件夹是需要忽略,而不需要提交到仓库里,比如bin目录下,target目录下文件。这个时候就要把一些忽略的文件或者目录写到.gitignore文件中。同样sourceTree也提供可视化操作

这里支持忽略精确的单个文件、忽略所有扩展名、忽略文件夹下的一切等。忽略以后,我们不会看到这些文件的变动

注意:需要说明的是忽略文件,只能忽略未跟踪文件,如果已跟踪文件(之前被提交过),需要先将这些文件删除后,提交代码库,再次忽略文件。

合并分支

从别的分支合并到当前分支。可以在要合并的分支上右键选择合并到当前分支。

当有冲突时,需要解决冲突,然后提交;如果没有冲突,需要手动点击推送按钮将合并后的变更提交到远程

解决冲突

当和别人改了相同文件的相同行时,(大部分我们多人改变了一个文件,git都会帮我们处理掉,自动合并,但是当改变同一文件的相同行时,在拉取时就会有冲突)

冲突文件截图如下:

 

解决冲突可以用两种方式

1、对有冲突的文件右键-->启动外部合并工具,一般情况下使用Beyond Compare.来解决冲突。

2、如果用开发工具idea来解决代码,可以使用idea的对比工具,或者使用exclipse工具。此处不做详细说明。

审查文件

假设一个文件被不同的开发修改过,有段代码需要找到修改人,我们可以右键复查文件查看每一行的作者。

查看文件变动历史

我们时常需要查看某个文件变动的历史,这里我们可以右键查看文件的 变更历史

按文件打开历史版本

有些时候,我们也需要查看文件的历史版本,这里可以选中节点后,选择那个变更文件,右键 打开历史版本

打开已选定的版本,可以查看历史文件,以供我们参考。

标签的使用

我们有些时候需要给一个变更增加一个标签,比如我们版本已经稳定了。可以标记为稳定1.0标签。

git tag v1
$ git tag -d v1 //移除标签

效果如下

存档

存档指将当前版本打包成一个zip包。

检出分支

检出分支意思是将当前项目回到选中的版本,这样我们可以很轻松回到任意一个版本,来编译项目,或者检查当时项目的问题。

其它

合并

一般是用于不通分支间,将某次提交的所有变更合并当当前分支。

rebase变基、交互式变基

交互式变都是变基,主要是将远程的这个分支名里的标识改变,大部分场景用不到

将某某分支 重置到这次提交

个功能蛮好用的,可以将目前的分支回滚到那一次的分支,然后将所有的文件变更显示出来,相当于回到当时准备提交的时候(包含之后的所有变动)。

遴选

从不同的分支中检出一个单独的commit , 并把它和你当前的分支合并,类似于打补丁,例如,修复一个所有分支都有的bug这样的场合可以适用。

在分支上右键由以下功能

跟踪远程分支:当未跟踪时表示本地没有和远程建立分支的联系

问题1:SourceTree超前N个版本,落后N个版本

这种情况下比较头疼,你提交不了代码,也拉取不了。主要原因是:有别人修改了这个分支,而且已经提交到远程分支上了,同时我们本地也提交修改了该分支,导致有冲突,就报这个错误,那么怎么体面的去解决这个问题呢?

我现在遇到的问题是落户3个版本,那么我需要回退到3个版本前。

右上角-->打开终端。

 

git reset --soft HEAD~3

执行完上面命令,发现本地提交的代码回退了,回到了未提交的状态。此时千万不要提交,处理的思路是:先存储本地文件,然后拉取远程文件,然后应用本地存储,然后再提交文件。

贮藏

 

此时可能会有冲突出现,需要解决冲突。解决冲突的步骤详细参考上面解决冲突步骤。

都看到这里了,你学会了吗?喜欢本文的话,关注公众号,更多精彩技术等你学

  • 10
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值