章节 ▾ 第二版

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 等)用于管理这些资源。

该命令仅在子模块中提及并完整介绍。

scroll-to-top