-
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 会从你指定的远程仓库抓取,然后立即尝试将其合并到你当前所在的分支。
我们在从远程仓库抓取和拉取中快速介绍了它,并在检查远程仓库中展示了如果你运行它将合并什么。
我们还在变基时的变基中查看了如何使用它来帮助解决变基的困难。
我们在检出远程分支中展示了如何使用 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
等)用于管理这些资源。
该命令仅在子模块中提及并完整介绍。