-
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.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 mergetool
命令只是启动一个外部合并帮助程序,以防你在 Git 中遇到合并问题。
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
输出中为每个提交添加一个验证字符串,具体取决于它是否已有效签名。