-
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 命令
A3.5 附录 C:Git 命令 - 共享与更新项目
共享和更新项目
Git 中访问网络的命令并不多,几乎所有的命令都是在本地数据库上操作的。当你准备共享你的工作或从其他地方拉取更改时,有一小部分命令用于处理远程仓库。
git fetch
git fetch 命令与远程仓库通信,并拉取远程仓库中你当前仓库所没有的所有信息,将其存储在本地数据库中。
我们还在 向项目贡献 的多个示例中使用了它。
我们在 引用规格 (Refspec) 中设置了高度自定义的引用规格,使 git fetch 执行一些不同于默认的操作。
git pull
git pull 命令基本上是 git fetch 和 git 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 submodule
git submodule 命令用于在普通仓库中管理外部仓库。这可以用于库或其他类型的共享资源。submodule 命令具有多个子命令(add, update, sync 等)来管理这些资源。
此命令仅在 子模块 中提到并得到全面介绍。