Git
章节 ▾ 第二版

A1.1 附录 A:其他环境中的 Git - 图形界面

如果你通读了整本书,你已经学到了很多关于如何在命令行中使用 Git 的知识。你可以处理本地文件,通过网络将你的仓库连接到其他仓库,并与他人有效地合作。但故事并没有就此结束;Git 通常用作更大生态系统的一部分,而终端并不总是使用它的最佳方式。现在,我们将了解 Git 可以派上用场的其他一些环境类型,以及其他应用程序(包括你的应用程序)如何与 Git 协同工作。

图形界面

Git 的原生环境在终端中。新特性首先显示在那里,只有在命令行中才能完全使用 Git 的全部功能。但是,纯文本并不是所有任务的最佳选择;有时,你需要的是可视化表示,并且有些用户对点击式界面更加适应。

需要注意的是,不同的界面针对不同的工作流进行定制。一些客户端只公开 Git 功能中经过精心策划的子集,以便支持作者认为有效的特定工作方式。从这个角度来看,没有一种工具可以称为“比其他工具更好”,它们只是更适合其预期用途。另请注意,图形客户端无法完成命令行客户端无法完成的任务;在使用存储库时,命令行仍然是你拥有最多功能和控制权的地方。

gitkgit-gui

安装 Git 时,你还会获得其可视化工具 gitkgit-gui

gitk 是一个图形历史查看器。可以将其视为 git loggit grep 上的功能强大的 GUI 外壳。当你要查找过去发生的事情或可视化项目的历史记录时,可以使用此工具。

从命令行调用 Gitk 最简单。只需 cd 进入 Git 存储库,然后键入

$ gitk [git log options]

Gitk 接受许多命令行选项,其中大多数会传递给底层 git log 操作。可能最有用的标志之一是 --all 标志,它告诉 gitk 显示可从任何 ref(不仅仅是 HEAD)访问的提交。Gitk 的界面如下所示

The `gitk` history viewer
图 177. gitk 历史记录查看器

顶部看起来有点像 git log --graph 的输出;每个点代表一个提交,线代表父级关系,ref 显示为彩色框。黄色点表示 HEAD,红色点表示尚未成为提交的更改。底部是所选提交的视图;左侧的注释和补丁,右侧的摘要视图。两者之间是用于搜索历史记录的一组控件。

另一方面,git-gui 主要是一个用于制作提交的工具。它也最容易从命令行调用

$ git gui

它看起来像这样

The `git-gui` commit tool
图 178. git-gui 提交工具

左侧是索引;未暂存的更改在顶部,暂存的更改在底部。您可以通过单击它们的图标在两种状态之间移动整个文件,也可以通过单击文件名来选择要查看的文件。

右上角是 diff 视图,其中显示了当前所选文件的更改。您可以在此区域中右键单击来暂存各个 hunk(或各个行)。

右下角是消息和操作区域。在文本框中键入您的消息,然后单击“提交”以执行类似于 git commit 的操作。您还可以选择通过选择“修改”单选按钮来修改上次提交,这会使用上次提交的内容更新“暂存的更改”区域。然后,您可以简单地暂存或取消暂存一些更改,更改提交消息,然后再次单击“提交”以用一个新提交替换旧提交。

gitkgit-gui 是面向任务的工具示例。它们各自针对特定目的(分别为查看历史记录和创建提交)而定制,并省略了该任务不需要的功能。

适用于 macOS 和 Windows 的 GitHub

GitHub 已创建了两个面向工作流的 Git 客户端:一个适用于 Windows,一个适用于 macOS。这些客户端是面向工作流的工具的一个很好的示例 - 它们不会公开 Git 的所有功能,而是专注于一组经过精心挑选的常用功能,这些功能可以很好地协同工作。它们看起来像这样

GitHub for macOS
图 179. 适用于 macOS 的 GitHub
GitHub for Windows
图 180. 适用于 Windows 的 GitHub

它们的设计目的是看起来和工作方式非常相似,因此在本章中,我们将把它们视为单个产品。我们不会详细介绍这些工具(它们有自己的文档),但快速浏览一下“更改”视图(您将在其中花费大部分时间)是有必要的。

  • 左侧是客户端正在跟踪的存储库列表;您可以通过单击此区域顶部的“+”图标来添加存储库(通过克隆或本地附加)。

  • 中间是一个提交输入区域,它允许您输入提交消息,并选择应包含哪些文件。在 Windows 上,提交历史记录直接显示在此下方;在 macOS 上,它位于一个单独的选项卡中。

  • 右侧是一个 diff 视图,其中显示了工作目录中更改的内容,或者所选提交中包含了哪些更改。

  • 最后要注意的是右上角的“同步”按钮,这是您通过网络进行交互的主要方式。

注意

您无需 GitHub 帐户即可使用这些工具。虽然它们旨在突出显示 GitHub 的服务和推荐的工作流,但它们将乐于与任何存储库合作,并对任何 Git 主机执行网络操作。

安装

可从 https://desktop.github.com/ 下载适用于 Windows 和 macOS 的 GitHub。首次运行应用程序时,它们将引导您完成所有首次 Git 设置,例如配置您的姓名和电子邮件地址,并且都为许多常见配置选项(例如凭据缓存和 CRLF 行为)设置了合理的默认值。

两者都是“常青的”——在应用程序打开时,将在后台下载并安装更新。这有助于包含一个捆绑的 Git 版本,这意味着您可能不必担心再次手动更新它。在 Windows 上,客户端包括一个使用 Posh-git 启动 PowerShell 的快捷方式,我们将在本章后面详细讨论。

下一步是为该工具提供一些可供其使用的存储库。客户端会向您显示您在 GitHub 上有权访问的存储库列表,并且可以一步克隆它们。如果您已经有一个本地存储库,只需将其目录从 Finder 或 Windows 资源管理器拖动到 GitHub 客户端窗口中,它就会包含在左侧的存储库列表中。

安装并配置后,您可以将 GitHub 客户端用于许多常见的 Git 任务。此工具的预期工作流有时称为“GitHub Flow”。我们在 GitHub Flow 中更详细地介绍了这一点,但一般要点是 (a) 您将提交到一个分支,并且 (b) 您将相当定期地与远程存储库同步。

分支管理是这两个工具分歧的领域之一。在 macOS 上,窗口顶部有一个用于创建新分支的按钮

“Create Branch” button on macOS
图 181. macOS 上的“创建分支”按钮

在 Windows 上,这是通过在分支切换小部件中键入新分支的名称来完成的

Creating a branch on Windows
图 182. 在 Windows 上创建分支

创建分支后,进行新提交非常简单。在您的工作目录中进行一些更改,当您切换到 GitHub 客户端窗口时,它将向您显示哪些文件已更改。输入提交消息,选择您要包含的文件,然后单击“提交”按钮(ctrl-enter 或 ⌘-enter)。

通过“同步”功能,您可以与网络上的其他存储库进行交互。Git 在内部对推送、获取、合并和变基有单独的操作,但 GitHub 客户端将所有这些操作合并到一个多步骤功能中。以下是在您单击“同步”按钮时发生的情况

  1. git pull --rebase。如果由于合并冲突而失败,则回退到 git pull --no-rebase

  2. git push.

这是使用这种样式工作时最常见的网络命令序列,因此将它们合并到一个命令中可以节省大量时间。

摘要

这些工具非常适合它们所设计的流程。开发者和非开发者都可以几分钟内在项目上进行协作,并且此类流程的许多最佳实践都已内置到工具中。但是,如果您的流程不同,或者您希望对网络操作的执行方式和时间有更多控制,我们建议您使用其他客户端或命令行。

其他 GUI

还有许多其他图形化 Git 客户端,它们从专门的单用途工具到尝试公开 Git 可以执行的所有操作的应用程序,不一而足。官方 Git 网站在 https://git.js.cn/downloads/guis 上整理了一份最受欢迎的客户端列表。在 Git wiki 网站上提供了更全面的列表,网址为 https://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools.html#Graphical_Interfaces

scroll-to-top