章节 ▾ 第二版

A3.5 附录 C:Git 命令 - 共享与更新项目

共享和更新项目

Git 中访问网络的命令并不多,几乎所有的命令都是在本地数据库上操作的。当你准备共享你的工作或从其他地方拉取更改时,有一小部分命令用于处理远程仓库。

git fetch

git fetch 命令与远程仓库通信,并拉取远程仓库中你当前仓库所没有的所有信息,将其存储在本地数据库中。

我们首先在 获取与拉取远程仓库 中介绍了该命令,并继续在 远程分支 中查看其使用示例。

我们还在 向项目贡献 的多个示例中使用了它。

我们在 拉取请求引用 中使用它来获取默认空间之外的单个特定引用,并在 打包 中了解如何从一个包(bundle)中获取内容。

我们在 引用规格 (Refspec) 中设置了高度自定义的引用规格,使 git fetch 执行一些不同于默认的操作。

git pull

git pull 命令基本上是 git fetchgit merge 命令的组合,Git 会从你指定的远程仓库获取内容,然后立即尝试将其合并到你当前所在的分支中。

我们在 获取与拉取远程仓库 中快速介绍了它,并在 检查远程仓库 中展示了如何查看运行它时会合并的内容。

我们还在 变基时的变基 中了解了如何使用它来处理变基困难。

我们在 检出远程分支 中展示了如何将它与 URL 一起使用,以一次性地拉取更改。

最后,我们在 提交签名 中快速提到,你可以使用 --verify-signatures 选项来验证你正在拉取的提交是否经过了 GPG 签名。

git push

git push 命令用于与另一个仓库通信,计算本地数据库中存在而远程仓库中没有的内容,然后将这些差异推送到另一个仓库。它需要对远程仓库具有写入权限,因此通常需要某种认证。

我们首先在 推送到远程仓库 中查看 git push 命令。这里我们涵盖了将分支推送到远程仓库的基础知识。在 推送 中,我们深入探讨了推送特定分支的内容,而在 跟踪分支 中,我们了解了如何设置跟踪分支以自动推送。在 删除远程分支 中,我们使用 --delete 标志通过 git push 删除服务器上的分支。

在整个 向项目贡献 章节中,我们看到了多个使用 git push 通过多个远程仓库共享分支工作的示例。

我们在 共享标签 中看到了如何使用 --tags 选项来共享你创建的标签。

发布子模块更改 中,我们使用 --recurse-submodules 选项,在推送超级项目之前检查所有子模块的工作是否已发布,这在使用子模块时非常有帮助。

其他客户端钩子 中,我们简要讨论了 pre-push 钩子,这是一个我们可以设置为在推送完成前运行的脚本,用于验证是否应该允许推送。

最后,在 推送引用规格 中,我们研究了使用完整的引用规格进行推送,而不是通常使用的常规快捷方式。这可以帮助你非常精确地指定你希望共享的工作内容。

git remote

git remote 命令是用于管理你的远程仓库记录的管理工具。它允许你将长 URL 保存为简短的句柄,例如“origin”,这样你就不必每次都输入它们。你可以拥有多个此类句柄,而 git remote 命令用于添加、更改和删除它们。

该命令在 远程仓库操作 中有详细介绍,包括列出、添加、删除和重命名它们。

它在本书随后的几乎每一章中都有使用,但始终采用标准的 git remote add <name> <url> 格式。

git archive

git archive 命令用于为项目的特定快照创建归档文件。

我们在 准备发布 中使用 git archive 为项目创建 tarball 以供共享。

git submodule

git submodule 命令用于在普通仓库中管理外部仓库。这可以用于库或其他类型的共享资源。submodule 命令具有多个子命令(add, update, sync 等)来管理这些资源。

此命令仅在 子模块 中提到并得到全面介绍。