-
A1. 附录 A:Git 在其他环境中的应用
- A1.1 图形界面
- A1.2 Visual Studio 中的 Git
- A1.3 Visual Studio Code 中的 Git
- A1.4 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine 中的 Git
- A1.5 Sublime Text 中的 Git
- A1.6 Bash 中的 Git
- A1.7 Zsh 中的 Git
- A1.8 PowerShell 中的 Git
- A1.9 总结
-
A2. 附录 B:在应用程序中嵌入 Git
-
A3. 附录 C:Git 命令
A1.1 附录 A:Git 在其他环境中的应用 - 图形界面
如果你已经读完了整本书,那么你已经学到了很多关于如何在命令行中使用 Git 的知识。你可以处理本地文件,通过网络将你的仓库连接到其他仓库,并有效地与他人协作。但是故事并没有到此结束;Git 通常用作一个更大的生态系统的一部分,而终端并不总是最好的工作方式。现在,我们将看看 Git 在哪些其他类型的环境中很有用,以及其他应用程序(包括你的应用程序)如何与 Git 协同工作。
图形界面
Git 的原生环境是在终端中。新功能首先在那里出现,并且只有在命令行中,Git 的全部功能才能完全由你支配。但纯文本并不是所有任务的最佳选择;有时你需要的是可视化的表示,并且一些用户使用点击式界面会更加舒适。
重要的是要注意,不同的界面是为不同的工作流程量身定制的。一些客户端只公开精心挑选的 Git 功能子集,以支持作者认为有效的特定工作方式。从这个角度来看,这些工具都不能被称为“更好”,它们只是更适合其预期用途。另请注意,这些图形客户端无法完成命令行客户端无法完成的任何操作;命令行仍然是使用仓库时拥有最大 power 和控制的地方。
gitk
和 git-gui
当你安装 Git 时,你还会获得它的可视化工具,gitk
和 git-gui
。
gitk
是一个图形历史查看器。可以把它想象成一个强大的 GUI shell,可以覆盖 git log
和 git grep
。当你想查找过去发生的事情或可视化项目的历史时,可以使用这个工具。
Gitk 最容易从命令行调用。只需 cd
进入 Git 仓库,然后输入
$ gitk [git log options]
Gitk 接受许多命令行选项,其中大多数会传递给底层的 git log
操作。可能最有用的一个选项是 --all
标志,它告诉 gitk
显示从*任何*引用可到达的提交,而不仅仅是 HEAD。Gitk 的界面如下所示

gitk
历史查看器顶部看起来有点像 git log --graph
的输出;每个点代表一个提交,线条代表父关系,引用显示为彩色框。黄色点代表 HEAD,红色点代表尚未成为提交的更改。底部是所选提交的视图;左侧是注释和补丁,右侧是摘要视图。中间是用于搜索历史记录的一组控件。
另一方面,git-gui
主要是一个用于创建提交的工具。它也最容易从命令行调用
$ git gui
它看起来像这样

git-gui
提交工具左侧是暂存区;未暂存的更改位于顶部,已暂存的更改位于底部。您可以通过单击它们各自的图标在两种状态之间移动整个文件,或者可以通过单击文件名来选择要查看的文件。
右上角是 diff 视图,显示当前所选文件的更改。您可以通过在此区域中单击鼠标右键来暂存单个 hunk(或单行)。
右下角是消息和操作区域。在文本框中键入您的消息,然后单击“提交”以执行类似于 git commit
的操作。您也可以选择通过选择“修改”单选按钮来修改上次提交,这将使用上次提交的内容更新“已暂存的更改”区域。然后,您可以简单地暂存或取消暂存一些更改,更改提交消息,然后再次单击“提交”以用新提交替换旧提交。
gitk
和 git-gui
是面向任务的工具的示例。它们中的每一个都针对特定目的(分别查看历史记录和创建提交)进行了定制,并省略了该任务不需要的功能。
适用于 macOS 和 Windows 的 GitHub
GitHub 创建了两个面向工作流程的 Git 客户端:一个用于 Windows,一个用于 macOS。这些客户端是面向工作流程的工具的一个很好的例子——它们不是公开 *所有* Git 的功能,而是专注于一组精选的常用功能,这些功能可以很好地协同工作。它们看起来像这样


它们的设计看起来和工作方式非常相似,因此我们将在本章中将它们视为一个产品。我们不会对这些工具进行详细的介绍(它们有自己的文档),但对“更改”视图(您将花费大部分时间的地方)进行快速浏览是很有必要的。
-
左侧是客户端正在跟踪的存储库列表;您可以通过单击此区域顶部的“+”图标来添加存储库(通过克隆或本地附加)。
-
在中心是一个提交输入区域,您可以在其中输入提交消息,并选择应包含哪些文件。在 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”。我们在The GitHub Flow中更详细地介绍了这一点,但总体的要点是 (a) 您将提交到分支,并且 (b) 您将相当有规律地与远程存储库同步。
分支管理是这两个工具出现分歧的领域之一。在 macOS 上,窗口顶部有一个用于创建新分支的按钮

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

创建分支后,创建新提交非常简单。在您的工作目录中进行一些更改,当您切换到 GitHub 客户端窗口时,它将显示哪些文件已更改。输入提交消息,选择要包含的文件,然后单击“提交”按钮(ctrl-enter 或 ⌘-enter)。
您通过网络与其他存储库交互的主要方式是通过“同步”功能。 Git 在内部具有用于推送、拉取、合并和变基的单独操作,但 GitHub 客户端将所有这些都压缩为一个多步骤功能。单击“同步”按钮时会发生以下情况
-
git pull --rebase
。如果由于合并冲突而失败,则回退到git pull --no-rebase
。 -
git push
.
这是在这种样式下工作时最常见的网络命令序列,因此将它们压缩为一个命令可以节省大量时间。
总结
这些工具非常适合它们设计的工作流程。开发人员和非开发人员都可以在几分钟内在一个项目上进行协作,并且这种工作流程的许多最佳实践都已内置到这些工具中。但是,如果您的工作流程不同,或者您希望更好地控制网络操作的方式和时间,我们建议您使用其他客户端或命令行。
其他 GUI
还有许多其他图形 Git 客户端,它们的范围从专门的、单用途的工具一直到试图公开 Git 可以做的所有事情的应用程序。官方 Git 网站上有一个精选的最受欢迎的客户端列表,位于 https://git-scm.cn/downloads/guis。 Git wiki 站点上提供了更全面的列表,位于 https://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools.html#Graphical_Interfaces。