-
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 之上的一个强大的图形界面外壳。当你试图查找过去发生的事情或可视化项目历史时,请使用此工具。
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)视图,显示了当前选定文件的更改。你可以通过在此区域右键点击来暂存单个补丁块(或单个行)。
右下角是消息和操作区域。在文本框中输入你的消息并点击“Commit”来执行类似于 git commit 的操作。你也可以通过选择“Amend”单选按钮来修改上一次提交,这将使用上一次提交的内容更新“Staged Changes”(已暂存更改)区域。然后,你可以简单地暂存或取消暂存一些更改,修改提交消息,并再次点击“Commit”,用新的提交替换旧的提交。
gitk 和 git-gui 是面向任务的工具示例。它们中的每一个都是为特定目的量身定制的(分别是查看历史和创建提交),并省略了该任务不需要的功能。
GitHub for macOS 和 Windows
GitHub 创建了两个面向工作流的 Git 客户端:一个用于 Windows,一个用于 macOS。这些客户端是面向工作流工具的绝佳示例——它们没有公开 Git 的所有功能,而是专注于一套协同工作良好的常用功能。它们看起来像这样
它们的设计外观和工作方式非常相似,因此我们在本章中将它们视为单一产品。我们不会对这些工具进行详细介绍(它们有自己的文档),但有必要对“更改”视图(你大部分时间将在那里度过)进行快速游览。
-
左侧是客户端正在跟踪的仓库列表;你可以通过点击此区域顶部的“+”图标来添加仓库(通过克隆或连接本地仓库)。
-
中间是提交输入区域,允许你输入提交消息并选择应包含哪些文件。在 Windows 上,提交历史直接显示在下方;在 macOS 上,它位于一个单独的选项卡中。
-
右侧是差异视图,显示了你的工作目录中发生了什么变化,或者所选提交中包含了哪些更改。
-
最后需要注意的是右上角的“Sync”(同步)按钮,这是你进行网络交互的主要方式。
|
注意
|
你不需要 GitHub 账户来使用这些工具。虽然它们的设计初衷是突出 GitHub 的服务和推荐的工作流,但它们完全可以与任何仓库配合使用,并与任何 Git 主机进行网络操作。 |
安装
GitHub for Windows 和 macOS 可以从 https://desktop.github.com/ 下载。当应用程序首次运行时,它们会引导你完成所有 Git 的首次设置,例如配置你的姓名和电子邮件地址,并且两者都为许多常见的配置选项(如凭据缓存和 CRLF 行为)设置了合理的默认值。
两者都是“常青”的(evergreen)——当应用程序打开时,更新会在后台下载并安装。这很有帮助地包括了捆绑版本的 Git,这意味着你可能不必再担心手动更新它。在 Windows 上,该客户端包含一个启动带有 Posh-git 的 PowerShell 的快捷方式,我们将在本章稍后讨论。
下一步是给工具提供一些要处理的仓库。客户端会向你显示你有权访问的 GitHub 仓库列表,并可以一步克隆它们。如果你已经拥有一个本地仓库,只需将其目录从 Finder 或 Windows 资源管理器拖到 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。