-
1. 起步
-
2. Git 基础
-
3. Git 分支
-
4. 服务器上的 Git
- 4.1 协议
- 4.2 在服务器上部署 Git
- 4.3 生成 SSH 公钥
- 4.4 架设服务器
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 第三方托管服务
- 4.10 小结
-
5. 分布式 Git
-
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 功能,以支持作者认为有效的特定工作方式。从这个角度来看,这些工具都不能称为“更好”,它们只是更适合其预期用途。另外请注意,这些图形化客户端能做的,命令行客户端都能做到;在操作您的仓库时,命令行仍然是您拥有最大力量和控制力的地方。
gitk 和 git-gui
当您安装 Git 时,您也会得到它的可视化工具 gitk 和 git-gui。
gitk 是一个图形化的历史查看器。可以将其视为 git log 和 git grep 的强大 GUI 外壳。当您试图查找过去发生的事情或可视化项目历史时,可以使用此工具。
从命令行调用 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 视图,显示当前选定文件的更改。您可以通过在此区域右键单击来暂存单个 hunks(或单个行)。
右下方是消息和操作区域。在文本框中输入您的消息,然后单击“Commit”以执行类似于 git commit 的操作。您还可以选择通过选择“Amend”单选按钮来修改上一个提交,这将用上一个提交的内容更新“Staged Changes”区域。然后,您可以简单地暂存或取消暂存一些更改,修改提交消息,然后再次单击“Commit”以替换旧的提交。
gitk 和 git-gui 是面向任务的工具的示例。它们各自针对特定目的(分别是查看历史和创建提交),并省略了该任务不需要的功能。
GitHub for macOS and Windows
GitHub 开发了两款面向工作流的 Git 客户端:一款用于 Windows,一款用于 macOS。这些客户端是面向工作流工具的一个很好的例子——它们没有暴露 Git 的所有功能,而是专注于一套经过精心策划的常用功能,这些功能可以很好地协同工作。它们看起来是这样的
它们的设计在外观和操作上非常相似,因此在本章中我们将它们视为一个产品。我们不会对这些工具进行详细的介绍(它们有自己的文档),但快速浏览一下“changes”视图(这是您将花费大部分时间的地方)是必要的。
-
左侧是客户端正在跟踪的仓库列表;您可以通过单击此区域顶部的“+”图标来添加一个仓库(通过克隆或附加本地仓库)。
-
中间是一个提交输入区域,允许您输入提交消息,并选择要包含哪些文件。在 Windows 上,提交历史直接显示在此下方;在 macOS 上,它在一个单独的选项卡中。
-
右侧是 diff 视图,显示工作目录中的更改,或者所选提交中包含的更改。
-
最后要注意的是右上角的“Sync”按钮,这是您通过网络进行交互的主要方式。
|
注意
|
您不需要 GitHub 帐户即可使用这些工具。虽然它们旨在突出 GitHub 的服务和推荐的工作流,但它们也能很好地处理任何仓库,并与任何 Git 主机进行网络操作。 |
安装
可以在 https://desktop.github.com/ 下载 GitHub for Windows 和 macOS。首次运行应用程序时,它们会引导您完成所有首次 Git 设置,例如配置您的姓名和电子邮件地址,并且两者都为许多常见配置选项设置了合理的默认值,例如凭证缓存和 CRLF 行为。
两者都是“常青”的——更新会在应用程序打开时在后台下载并安装。这很方便地包含了一个捆绑的 Git 版本,这意味着您可能不必担心手动更新它。在 Windows 上,客户端包含一个快捷方式,可以启动带有 Posh-git 的 PowerShell,我们将在本章后面详细讨论。
下一步是让该工具处理一些仓库。该客户端会显示您在 GitHub 上有权访问的仓库列表,并可以一步克隆它们。如果您已经有一个本地仓库,只需将其目录从 Finder 或 Windows Explorer 拖放到 GitHub 客户端窗口中,它就会包含在左侧的仓库列表中。
推荐的工作流
安装和配置完成后,您可以使用 GitHub 客户端执行许多常见的 Git 任务。该工具的预期工作流有时被称为“GitHub Flow”。我们将在 GitHub Flow 中更详细地介绍这一点,但总的要点是(a)您将提交到分支,以及(b)您将相当频繁地与远程仓库同步。
分支管理是这两个工具不同的领域之一。在 macOS 上,窗口顶部有一个用于创建新分支的按钮
在 Windows 上,这可以通过在分支切换小部件中键入新分支的名称来完成
创建分支后,进行新的提交相对简单。在工作目录中进行一些更改,当您切换到 GitHub 客户端窗口时,它会显示您更改了哪些文件。输入提交消息,选择要包含的文件,然后单击“Commit”按钮(Ctrl+Enter 或 ⌘+Enter)。
您通过网络与其他仓库交互的主要方式是通过“Sync”功能。Git 内部有独立的推送、获取、合并和变基操作,但 GitHub 客户端将所有这些合并为一个多步功能。当您单击 Sync 按钮时会发生以下情况
-
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 上有更全面的列表。