Git
章节 ▾ 第二版

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 钩子,这是一个可以在推送完成之前设置的脚本,用于验证是否允许进行推送。

最后,在 推送 Refspecs 中,我们查看了使用完整的 Refspecs 推送,而不是通常使用的通用快捷方式。这可以帮助您非常明确地指定要共享的工作。

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