-
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 命令会与远程仓库通信,并下载你当前仓库中没有的该远程仓库中的所有信息,并将其存储在你的本地数据库中。
我们首先在 从远程仓库获取和拉取 中介绍这个命令,并在 远程分支 中继续看它的使用示例。
我们也在 贡献项目 的几个示例中使用它。
我们在 引用规范 中设置了高度自定义的引用规范,以便让 git fetch 执行与默认值略有不同的操作。
git pull
git pull 命令基本上是 git fetch 和 git merge 命令的组合,Git 会从你指定的远程仓库获取,然后立即尝试将其合并到你当前的分支中。
我们在 从远程仓库获取和拉取 中快速介绍它,并展示如何在 检查远程仓库 中查看它将合并的内容。
我们还将在 Rebase When You Rebase 中了解如何使用它来帮助解决 Rebase 的困难。
我们将在 检出远程分支 中展示如何使用 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 等)用于管理这些资源。
这个命令仅在 子模块 中提及并完全涵盖。