比SourceTree好用一百万倍的Git GUI工具 — Android Studio 内置小工具详细介绍🤣

11,663 阅读10分钟

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。

系列

由于篇幅问题,一篇文章写完太长,因此分了几篇来写

Android Studio Git 小工具使用介绍简介

Android Studio Git 进阶技巧 交互式变基实战教程

Android Studio Git 周边插件一览 - 掘金

介绍

尽管很多geek会使用命令行轻松的使用Git,但是有些情况下,对小白来说GUI确实可以大大加快工作流程。

目前市面上有很多优秀的Git GUI 客户端

比如 SourceTreeTowerSmartGitGitKraken

这么多年换了几家公司接触下来,身边的同事几乎都是使用SourceTree,不管是Windows还是Mac

虽然我们的标题夸张了点,但是不代表SourceTree不好用,相反,这款软件确实是非常好用的。

但是如果我们开发软件是IDEA系列的话,我个人觉得还是IDEA自带的Git GUI 更方便快捷,也更好用些,毕竟所谓IDE,就是集成开发环境嘛,能一个窗口搞定的,没必要搞两个软件,尤其是SourceTree有的功能,Android Studio Git 基本都有,还有很多SourceTree没有的贴心小功能,下面我们详细介绍。

功能介绍

首先一个入口在最上面的工具栏上

image.png

这个窗口我其实打开的很少,因为很多常用的功能比如Commit, Push, Update Project等都是快捷键打开的,其他的一般也有其他入口打开。

但是git相关的操作基本都可以从这里进,所以接下来就按这菜单先简单介绍下Android Studio内置的小工具都有哪些功能。

Commit 提交

image.png

这个界面是我们平时打交道最多的界面了,打开大概分为4个区域

①区域这是文件修改区域,右上角可以选changelist,这是一个非常好用的功能,比如我同时修改2个bug,那我会建立2个changelist,每个list里只存放某个bug相关的修改。

这样我在提交的时候,每次提交都是内聚的,不会污染commit。

这个区域的左上角就是一些针对文件的操作,分别是 修改对比回滚文件刷新列表分类查看


②区域是填写commit日志的,可以看到右上角有3个按钮,最后一个是最近的日志历史记录

前两个则是我安装的插件,用来辅助写好更规范的日志的,插件暂不细说,先贴个图,我们后面还会单独说。

image.png

image.png

image.png


③区域则是文件对比,这一块可以看到直接是左右文件对比,也就是Side by Side,这样显示更友好,相对于SourceTree和git网页端默认的对比模式要友好太多了,当然,你要是更喜欢那种模式,也是可以更改的。

其他的还有一些忽略条件啊,比如忽略空格,当我的改动只是增加了几个空格的时候,他会认为没有改变。 还可以选择高亮内容,比如行,单词等,功能非常强大。 一般如果我们有集成code review的话,比如我司用到Jetbrains家的Upsource,这里也能直接看到同事对代码的评论等。


④区域则是在提交之前,给我们做的一些操作,一般有插件干预的话,这里也会多出相应的内容,默认的有提交前自动格式化代码,重新排序代码,优化导入,代码分析等,可以看到功能真的是非常强大,而且深度集成IDE,配合插件,一条龙服务,非常的方便。

Push 推送

推送这个没什么好说的,基础的功能之一,Android Studio自带的有个好处,假如我们的项目有很多子模块,我们可以一起性一起提交,如果使用SourceTree来的话,就比较难实现了,至少默认没有办法做到,我了解到的就是利用SourceTree自定义脚本功能,跑我们的脚本去推送,这无疑增加了非常大的成本。

如下图所示

image.png

Update Project更新

image.png

这个则比较简单,我们拉取更新用的,有2个选择,一个是Merge,一个是Rebase,至于这2个有什么区别,这里不细讲了,不熟悉的可以自行搜索下,掘金有很多优秀的文章讲的很清楚

我一般都是使用Rebase来更新的,这样有助于我们保持干净的Commit记录,如果使用merge,很容易出现非常多的合并路线。

Merge 合并

image.png

这个也非常简单了,但凡是个GUI软件都会有的基础功能,下拉框是选择分支的,也就是我们当前的分支合并到哪个分支,然后Merge的时候,假如我们使用命令行的话,会有好几个额外的参数,比如 --no-ff--ff-only,说实话,加入平时我们对这些参数不是使用的很频繁的话,即使学会了也很容易忘记,或者记错,Android Studio 自带的则可以直接下拉选择,后面还有贴心的使用介绍,熟悉的人只要稍微看一下就知道选取哪个。

Rebase 变基

image.png

基本和Merge长一样,只要操作者注意下你在干什么就行了,毕竟很多小白不会用Rebase的,后面我会详细介绍RebaseAndroid Studio中的妙用。

Branches 分支管理

image.png

这个也是非常基础的功能之一了

我们可以看到 我们可以新建分支,检出Tag或者特定版本

下面还列出了所有的本地分支和远端分支,选中分支一下,针对该分支常规的操作都有

  • checkout当前分支
  • 基于此分支检出新分支
  • 分支对比
  • 对比分支
  • rebase分支
  • merge分支
  • 更新分支
  • 推送分支
  • 重命名分支
  • 删除分支

New Branch 新建分支

image.png

新建分支,填入分支名字即可。

New Tag 打tag

image.png

也是非常基础的功能了,填入相应的信息,我们的tag就打好了。

Reset Head 重置代码

image.png

这个是个危险操作,用来重置代码,一般git reset的参数 --mixed 等也是以下拉选择的形式提供给操作者。 小白慎用!

Show Git Log 显示提交日志

这个就打开了另外一个更强大的界面,后面会详细介绍,很多我们日常操作与高阶操作都在这个界面进行。

image.png

Patch 补丁包

image.png

这里可以打Patch和应用Patch

这是一个git diff 生成的标准补丁包,相对于命令行来说,无疑也是简洁许多。

Uncommitted Changes 未提交改动

image.png

这个Shelf就是Android Studio的亮点之一了,虽然功能上类似于Stash,但是易用性和用途都是完爆git自带的Stash,这个后面也会再详细介绍。

Current File

image.png

则是最当前窗口中激活的文件的操作,比如

  • 提交
  • Add
  • 展示Blame 详细信息
  • 按行展示Blame信息
  • 对比 (默认workspace和index对比,也就是相当于 git diff)
  • 和某个提交对比
  • 和分支对比
  • 展示这个文件的历史记录

上面是把菜单所带的功能大概介绍了下,可以看出,Android Studio 自动的GUI已经是非常强大的了。

常规操作

下面再介绍下我们平时一直打交道的功能区

image.png

Local Changes 本地改动

上图中展示的就是Local changes的界面,我们先看下左边一列功能按钮都是干嘛的。

从上往下依次是

  • 刷新文件状态,(有时候我们有一些文件没有追踪,或者有一些文件没有设置忽略,这时候配好后,刷新一下就好了)
  • 提交选中的文件
  • 回滚选中文件
  • 对比选中文件 (workspace 和 index 对比)
  • changelist管理
  • 暂存选中文件 (暂存到第二个tab页中,区别于git自带的stash)
  • 文件分类管理
  • 查看忽略文件等
  • 展开列表
  • 收缩列表
  • 显示右边具体内容栏

针对文件右键,有一些啊常用的功能

image.png

Shelf 本地暂存

这个要重点说一下,我觉得这是一个炸点。

首先先说下他和Git 自带的stash的区别。

shelve是JetBrains的产品功能(例如WebStorm,PhpStorm,Android Studio等)。它将搁置的文件放入.idea/shelf目录中。

stash是git选项之一。它将存储的文件放在.git目录下。

我们先看下使用shelve的效果是什么,最后再说结论。

当我们对 Default Changelist 中的第一个文件 activity_main2.xml shevle操作,再对 未完待续 这整个changelistshelve

我们切到 Shelf tab看下。

image.png

这2个文件的修改记录就从Local Changes 迁移到了 Shelf中,,由IDE帮我们管理。

这时候我们需要重新应用的时候,只需要在需要的地方右键恢复即可。

image.png

image.png

可以看到我们不仅可以对整个列表进行恢复,也可以单独对某个列表中的某些文件做恢复。

总结下 git stashIDEA Shelf 功能简单一看有很多相似之处,用来暂存代码,给我们工作区一个干净的环境,但是 Shelf 的颗粒度更细致,如果使用git stash,一次stash5个文件,那恢复的时候只能5个一起恢复,另外git stash的使用也不是太方便,需要敲命令行,而且默认命名 比如 change@1change@2 这样,辨识度非常低。

所以我建议如果是使用IDEA系列软件的话,这一点上完全可以使用Shelf ,抛弃笨重繁琐的git stash

Log git日志

image.png

这个就是 Android Studio 自带的查看git log的界面。

可以看到分为左中右三栏,左边是分支的选择,中间是某个分支的路线图,右边是选中的某次提交的具体信息。

针对某次提交,我们右键看一下,有很多实用的功能。

image.png

其中绿色圈起的是精华所在,很多命令行要敲不少命令的热频操作,这里都做了集成。

比如快捷修改某次提交的 Commit Message。 比如快捷用来和某次提交合并 还有非常强大的交互式变基(这个也是精华所在,可以用来给我们的提交更换位置,合并整合等)

这里只是先简单介绍下,关于这个交互式变基我在这篇文章里有详细说明。

总结

此文走马观花般的将Android Studio自带的Git小工具所具有的功能简单过了一遍,到这里其实就能发现,这个内置小工具完全不输市面上任何Git GUI了。

由于他是内置的,所以对我们写代码来说相比于其他软件,无疑更顺手,再搭配各种各样的插件,我们几乎能实现我们所能想到的一切和git相关的功能,这就是标题我所说的强大一百万倍的理由了,他除了自身功能完善之外,还能利用插件做到无限可能,厉不厉害!

由于本文篇幅过长了,一些我这些年使用过程中用到的,学到的一些小技巧,我单独成文了,地址在开头,大家自取。

「欢迎在评论区讨论,掘金官方将在掘力星计划活动结束后,在评论区抽送100份掘金周边,抽奖详情见活动文章」。