-
A1. 附录 A:Git 在其他环境中的使用
- A1.1 图形界面
- A1.2 Git 在 Visual Studio 中的使用
- A1.3 Git 在 Visual Studio Code 中的使用
- A1.4 Git 在 IntelliJ/PyCharm/WebStorm/PhpStorm/RubyMine 中的使用
- A1.5 Git 在 Sublime Text 中的使用
- A1.6 Git 在 Bash 中的使用
- A1.7 Git 在 Zsh 中的使用
- A1.8 Git 在 PowerShell 中的使用
- A1.9 总结
-
A2. 附录 B:在应用程序中嵌入 Git
-
A3. 附录 C:Git 命令
A3.4 附录 C:Git 命令 - 分支与合并
分支与合并
只有少数几个命令实现了 Git 中大部分的分支和合并功能。
git branch
git branch
命令实际上是一个分支管理工具。它可以列出你拥有的分支,创建新的分支,删除分支以及重命名分支。
在 跟踪分支 中,我们使用 git branch -u
选项来设置跟踪分支。
最后,我们在 Git 引用 中介绍了它在后台的一些操作。
git checkout
git checkout
命令用于切换分支并将内容检出到你的工作目录。
我们首先在 切换分支 中遇到了这个命令,以及 git branch
命令。
我们看到如何使用 --track
标记来开始跟踪分支,在 跟踪分支 中。
我们使用它通过 --conflict=diff3
重新引入文件冲突,在 检出冲突 中。
我们在 重置详解 中详细介绍了它与 git reset
的关系。
最后,我们在 HEAD 中介绍了一些实现细节。
git merge
git merge
工具用于将一个或多个分支合并到当前检出的分支中。然后它将当前分支推进到合并结果。
git merge
命令首次在 基础分支 中介绍。虽然它在本书的各个地方都有使用,但 merge
命令的变体很少——通常只是 git merge <branch>
,其中包含要合并的单个分支的名称。
我们在 分叉的公共项目 的最后部分介绍了如何进行压缩合并(其中 Git 合并工作,但假装它只是一个新的提交,而不会记录正在合并的分支的历史记录)。
我们在 高级合并 中详细介绍了合并过程和命令,包括 -Xignore-space-change
命令和 --abort
标志来中止出现问题的合并。
如果您的项目使用 GPG 签名,我们学习了如何在 签名提交 中合并前验证签名。
最后,我们在 子树合并 中学习了子树合并。
git mergetool
如果在 Git 中遇到合并问题,git mergetool
命令会简单地启动一个外部合并帮助程序。
git log
git log
命令用于显示项目从最新提交快照向后追溯的可达记录历史。默认情况下,它只会显示当前所在分支的历史记录,但可以指定不同的甚至多个头或分支来进行遍历。它也常用于在提交级别显示两个或多个分支之间的差异。
此命令在本书的几乎每个章节中都用于演示项目的历史记录。
我们在 查看提交历史 中介绍了该命令并对其进行了深入的介绍。在那里,我们查看了 -p
和 --stat
选项以了解每次提交中引入了什么内容,以及 --pretty
和 --oneline
选项以更简洁地查看历史记录,以及一些简单的日期和作者过滤选项。
在 创建新分支 中,我们将其与 --decorate
选项一起使用,以便轻松地可视化我们的分支指针所在的位置,并且我们还使用 --graph
选项来查看不同的历史记录是什么样子。
在 小型私有团队 和 提交范围 中,我们介绍了 branchA..branchB
语法,以便使用 git log
命令查看相对于另一个分支而言,哪些提交是某个分支独有的。在 提交范围 中,我们对此进行了相当广泛的介绍。
在 合并日志 和 三点 中,我们介绍了使用 branchA…branchB
格式和 --left-right
语法来查看在一个分支或另一个分支中但不在两者中的内容。在 合并日志 中,我们还介绍了如何使用 --merge
选项来帮助调试合并冲突,以及如何使用 --cc
选项查看历史记录中的合并提交冲突。
在 RefLog 简称 中,我们使用 -g
选项通过此工具查看 Git reflog,而不是进行分支遍历。
在 搜索 中,我们介绍了如何使用 -S
和 -L
选项对代码历史上发生的事情进行相当复杂的搜索,例如查看函数的历史记录。
在 签名提交 中,我们介绍了如何使用 --show-signature
向 git log
输出中的每个提交添加一个验证字符串,具体取决于它是否已有效签名。