章节 ▾ 第二版

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

共享和更新项目

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

git fetch

git fetch 命令与远程仓库通信,并获取该仓库中所有不在当前仓库中的信息,然后将其存储在本地数据库中。

我们首先在从远程获取和拉取中查看此命令,并在远程分支中继续看到其使用示例。

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

我们使用它在拉取请求引用中获取超出默认空间的单个特定引用,并在打包中看到如何从包中获取。

我们在引用规范中设置了高度自定义的引用规范,以使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 命令有几个子命令(addupdatesync 等)用于管理这些资源。

此命令仅在子模块中提及并完全涵盖。