Git – 6 款免费 GUI 客户端
本文将概述 6 款免费的 Git GUI 客户端
1. 引言
我一直相信 GUI 工具的价值,并且是它们的忠实粉丝。我认为它们能提高我的工作效率,而精美的图形界面甚至能提供对问题/感兴趣事项更好的洞察。随着软件工程师每天面对的工具和语言数量的不断增加,要记住所有命令行命令及其众多选项变得越来越困难。
但是,也有另一种观点,在程序员中也广为流传,即有些人喜欢一切都通过命令行完成。这些“大师”享受从命令行运行 Git。本文不适合他们。
在本文中,我们将概述目前可用的精选的免费 Git GUI 应用程序。我们只关注**完全免费的完整版本工具**,它们可以在**非商业和商业环境**中免费运行。如果软件工程师在家中投入时间和精力学习和掌握某个工具的技能,而该工具仅对非商业环境免费,然后在工作中发现公司不打算购买该特定工具,那将是时间和精力的浪费。此外,我们也不会关注提供免费有限功能版本但需要付费才能获得完整功能版本的工具。幸运的是,对于 Git,有许多优质的免费工具可供选择。
1.1. 测试工具
以下是我们关注的免费 Git GUI 工具列表
- SourceTree (https://www.sourcetreeapp.com/)
- GitHub Desktop (https://desktop.github.com/)
- Git Extensions (https://gitextensions.github.io/)
- MeGit/EGit (https://github.com/eclipsesource/megit)
- Guitar (https://github.com/soramimi/Guitar)
- TortoiseGit (https://tortoisegit.org/)
1.2. 测试方法
我们假设读者具备一定的 Git 中级技能,因此不会解释 Git 的术语和概念。我们只会展示 GUI 工具的功能。我们将在以下环境中测试所有工具:
- BitBucket Cloud (https://bitbucket.org/product/ ) 作为 Git 远程仓库
- 小型本地 Windows 项目作为本地仓库
2. SourceTree
2.1. 详细信息
- 产品:SourceTree
- 公司:Atlassian [3]
- 网站:https://www.sourcetreeapp.com/
- 平台:Windows, Mac
- 许可:根据 [4],完整版本完全免费,可用于非商业和商业用途
2.2. 概述
以下是截图。
主面板是分支/历史记录面板
您可以清楚地看到暂存文件/未暂存文件/提交按钮
使用简单的集成查看器来显示冲突文件/合并面板
列出了 stash,可以选择并查看。Stashes 面板
Blame 以非常简单的方式逐行显示文件的更改信息。Blame 面板
该工具支持集成的“创建拉取请求”菜单选项,该选项会在 Web 浏览器中打开 BitBucket 页面
提交详情、父节点、作者和日期都可以清晰地看到
2.3. 印象
- 非常漂亮的图形界面。运行流畅。稳定。用户界面信息量与易用性之间取得了良好的平衡。
- 大型公司 Atlassian 在背后支持,因此它是一个维护良好的应用程序。
- 许多不错的特性。与 BitBucket Cloud 集成良好,尽管 BitBucket Cloud 也是 Atlassian 的产品
3. GitHub Desktop
3.1. 详细信息
- 产品:GitHub Desktop
- 公司:GitHub/Microsoft
- 网站:https://desktop.github.com/
- 平台:Windows, Mac
- 许可:根据 [5],完整版本完全免费,可用于非商业和商业用途
- 注意:尽管名为“GitHub Desktop”,但它也可以与其他 Git 服务一起使用。我们已将其与 BitBucket Cloud 一起测试。
3.2. 概述
以下是截图。
主面板是您查看分支列表并选择当前分支的地方。一次只能看到一个分支
修改过的文件/提交按钮的表单很简单。不区分工作文件和暂存文件
Stashes 面板显示已stash的文件。同样,表单非常简单
冲突文件/合并面板需要使用外部工具来解决冲突
3.3. 印象
- 我们没有看到暂存文件与未暂存文件之间的区别
- 似乎只能进行 stash,添加第二个 stash 时会提示覆盖现有 stash
- 未找到 Blame 功能
- 未找到获取更多提交详情信息的方法
- “拉取请求”是灰色的,可能是因为我们将其与 BitBucket Cloud 一起使用。未找到输入除 GitHub 之外其他账户的凭证的方法。尽管如此,当我输入 BitBucket 凭证时,拉取/推送工作正常。
- 可以检测冲突并提供打开您选择的应用程序进行文件合并。它本身没有冲突查看器。
- 未找到一次图形化显示多个分支的方法。
- 总的来说,GUI 选项比之前的工具要简陋得多。
- 考虑到 Microsoft 以 75 亿美元收购了 GitHub [7],我对这款工具如此简陋的功能/选项感到惊讶。它在功能/图形展示方面劣于我们在此测试的几款应用程序。
4. Git Extensions
4.1. 详细信息
- 产品:Git Extensions
- 公司:开源
- 网站:https://gitextensions.github.io/
- 平台:Windows, Linux
- 许可:根据 [6],它是开源的,完整版本完全免费,可用于非商业和商业用途
4.2. 概述
以下是截图
非常漂亮的面板,显示分支/历史记录
暂存文件/未暂存文件(工作目录)显示为当前提交顶部的节点
暂存文件/未暂存文件/提交对话框清晰地显示了即将提交的文件
提交详情面板显示了所选提交的许多详细信息
Stashes 面板显示 stash 及其所在的分支
Blame 面板有点复杂。下半部分是经典的 Blame 功能,上半部分显示了对应于文件/下半部分所选行的分支中的提交位置
创建拉取请求菜单选项(不适用于 BitBacket)仅适用于 GitHub
4.3. 印象
- 这款应用程序的选项和功能之多令人惊讶。丰富的图形界面,提供众多选项。
- 启动时询问的问题太多,它们需要提供默认值,即使是简单的默认值。它在配置 diff-tool 和 marge-tool 的问题上一直困扰我。它们应该默认设置为 *notepad.exe*,这样用户以后就可以自行更改。
- 我花了 30 分钟尝试配置正确的合并工具,但仍然无法正常工作。它就是不行。最简单的工具本应作为默认安装,因为这样你就被卡在了配置上。
- 许多选项运行良好且很炫酷。它被设想为“专家工具”,适合那些知道自己在做什么的人。对于初学者来说,UI 有点复杂。
- 它不知何故在我的项目目录中创建了一些“备份”文件,例如“*Doc4.txt.orig*”。并将其添加到 git 项目中。我很失望,因为它以这种方式损坏了我的存储库,这违背了它的基本目的。也许它误导我点击了错误的东西来接受该提交,但我不知道那个文件是怎么进入存储库的。
- 它在渲染对话框方面存在一些问题,您需要调整它们的大小才能很好地看到内容。
- 如果您喜欢一款具有许多高级功能、精通 Git 并喜欢研究各种选项的工具,您会喜欢它。但是,我的总体印象是它不够成熟,有点不稳定,并且可能对日常工作造成困扰。
5. MeGit/EGit
5.1. 详细信息
- 产品:MeGit/EGit
- 公司:开源/Eclipse 许可
- 网站:https://github.com/eclipsesource/megit
- 平台:Windows, Linux. Mac
- 许可:根据 [8],它是开源的,完整版本完全免费,可用于非商业和商业用途
5.2. 概述
以下是截图
非常漂亮的“分支/历史记录”面板
一个非常漂亮且干净的表单,显示“暂存文件/未暂存文件/提交”按钮
提交详情面板包含所有所需信息
Stashes 面板可以清晰地查看所有 stash,包括 stash 所基于的提交的位置。文件 diff 会立即显示 stash 的更改。
Blame 面板显示高级信息。它指向了导致更改的提交位置以及它所在的提交分支。它还会立即显示该提交的文件 diff
冲突文件/合并面板提供了一个集成的文件 diff 工具来显示/启用更改。未暂存与暂存文件也有清晰的视图
5.3. 印象
- MeGit [8] 实际上是一个包装应用程序,它将 Eclipse 插件 EGit [9] 包装成一个独立的应用程序。抛开技术背景不谈,我们关心的是最终结果:它是否运行良好?它是否可用于各种项目的独立应用程序?
- 从许可角度来看,[8] 声称所有内容都是免费和开源的。但由于它实际上使用了 EGit [9],所以这取决于 EGit 的许可。从我在 [10] 看到的信息来看,它最终遵循 Eclipse 公共许可证,因此一切都应该是免费的。
- 实际上,它的运行效果相当不错。用户需要一些时间来适应用户界面,但它运行得相当流畅。
- 我喜欢 UI 提供了组织良好且详细的信息。它让你感觉一切都在你的掌控之中。
- 未找到从应用程序发出“拉取请求”的方法。
- 鉴于这款工具看起来相当令人印象深刻,我对其进行了更多了解。它似乎没有得到定期更新和维护。从我看到的情况来看,EGit 插件的发布比 MeGit 的发布要晚。这意味着从该网站下载的 MeGit 可执行文件中不包含最新版本的 EGit。
6. Guitar
6.1. 详细信息
- 产品:Guitar
- 公司:开源
- 网站:https://github.com/soramimi/Guitar
- 平台:Windows, Linux, Mac
- 许可:根据 [11],它是开源的,完整版本完全免费,可用于非商业和商业用途
6.2. 概述
以下是截图
主面板显示分支/历史记录面板
暂存文件/未暂存文件/提交按钮有点粗糙且不友好
提交详情对话框也很粗糙,但提供了所有必要的信息
Blame 面板简单而实用
6.3. 印象
- 从一开始就有很糟糕的印象。看起来像一个未完成的应用程序。
- GUI 有时非常慢,尽管它声称是 C++ 代码
- 它不允许我在工作目录中有未暂存文件的情况下进行提交。这是一个重大的功能 bug。
- 无法查看 stash 内容
- 决定不再浪费时间了。它看起来是一个未完成/粗糙的应用程序,功能很少,有时慢得令人讨厌,而且绝对不是你每天都想使用的东西。
- 有趣的是,该应用程序在一些 Git 网站上被列为推荐的 GUI 客户端……但它实际上并不适合日常工作。与我们在此测试的其他应用程序相比,它大大逊色。
7. TortoiseGit
7.1. 详细信息
- 产品:TortoiseGit
- 公司:开源
- 网站:https://tortoisegit.org/
- 平台:Windows
- 许可:根据 [12],它是开源的,完整版本完全免费,可用于非商业和商业用途
7.2. 概述
以下是截图
奇怪的应用程序设计,它作为文件资源管理器的外壳扩展启动,通过项目/仓库所在文件夹的右键上下文菜单进行操作。从上下文菜单开始,列出了所有应用程序选项。这实际上就是应用程序菜单。我们选择了“Repo-browser”(仓库浏览器)。然后我们选择查看所有分支
再次通过右键单击,我们进入了“暂存文件/未暂存文件”。在那里,我们看到了打开提交对话框的**提交**按钮
然后我们尝试合并一个分支(带有冲突文件)来看看会发生什么。我们看到了许多对话框。合并分支/冲突文件/合并面板
Stashes 面板显示基本的 stash 信息
要访问 Blame 面板,您需要右键单击文件资源管理器中的文件,然后浏览上下文菜单选项
7.3. 印象
- 应用程序从上下文菜单启动,所有菜单选项也列为上下文菜单选项,因此会出现很多“右键单击”。这对于普通用户来说有点奇怪/不友好。
- 虽然它肯定有很多功能,但用户界面分散在独立的对话框中,并且有点不符合“GUI 客户端”的定义。
- 我们认为,我们之前在其他应用程序中看到的集成 GUI 客户端解决方案,为普通用户提供了更舒适的工作体验。
- 由于现在右键单击文件时出现太多来自该应用程序的选项,这非常烦人,我计划尽快卸载它。
8. 结论
本次测试的明确赢家是:
- SourceTree (https://www.sourcetreeapp.com/)
如果您正在寻找一款稳定、功能丰富、漂亮的图形界面且易于使用的免费 GUI Git 客户端,SourceTree 是您的首选。这是您唯一需要的 Git 客户端应用程序,您可以在家中和将来工作的任何工作场所免费使用它。
然而,另一款给我留下深刻印象的应用程序是 **MeGit/EGit (https://github.com/eclipsesource/megit)**。它为高级用户提供了更详细的信息。我们注意到的唯一问题是它没有得到定期维护。另一方面,Git 协议是稳定的,并且不会随时间而改变。
当然,偏好和观点各不相同,每个人都有权选择自己喜欢的工具并随意使用。
9. 参考文献
- [1] https://www.sourcetreeapp.com/
- [2] https://bitbucket.org/product
- [3] https://www.atlassian.com/
- [4] https://community.atlassian.com/t5/Sourcetree-questions/Sourcetree-license-commercial-use/qaq-p/1790335
- [5] https://github.community/t/can-i-use-github-desktop-for-commercial-use/211489
- [6] https://github.com/gitextensions/gitextensions/wiki
- [7] https://news.microsoft.com/2018/06/04/microsoft-to-acquire-github-for-7-5-billion/
- [8] https://github.com/eclipsesource/megit
- [9] https://www.eclipse.org/egit/
- [10] https://git.eclipse.org/r/plugins/gitiles/egit/egit/+/e7c4cdb112614bd59e5e38a1412c627f740e811e/LICENSE
- [11] https://github.com/soramimi/Guitar
- [12] https://tortoisegit.org/about/
10. 历史
- 2022 年 8 月 1 日:初始版本