-
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
重新引入文件冲突。
我们在揭秘 Reset 中更详细地探讨了它与 git reset
的关系。
最后,我们在HEAD中介绍了一些实现细节。
git merge
git merge
工具用于将一个或多个分支合并到你已检出的分支中。然后它会将当前分支推进到合并结果。
git merge
命令首次在基本分支中介绍。尽管它在本书的各个地方都有使用,但 merge
命令的变化很少——通常只是 git merge <branch>
,其中 <branch>
是你要合并的单个分支的名称。
我们在派生公共项目的最后介绍了如何进行压缩合并(Git 合并了工作,但假装它只是一个新提交,而不记录你正在合并的分支的历史)。
我们在高级合并中详细介绍了合并过程和命令,包括 -Xignore-space-change
命令和 --abort
标志,用于中止问题合并。
在签署提交中,我们学习了如果你的项目使用 GPG 签名,如何在合并前验证签名。
最后,我们在子树合并中了解了子树合并。
git mergetool
git mergetool
命令只是在你在 Git 中遇到合并问题时启动一个外部合并助手。
git log
git log
命令用于从最新的提交快照开始向后显示项目可达的记录历史。默认情况下,它只显示你当前所在分支的历史,但可以给定不同的甚至多个 HEAD 或分支来进行遍历。它也常用于在提交层面显示两个或多个分支之间的差异。
本书几乎每一章都使用此命令来演示项目的历史。
我们在查看提交历史中介绍了此命令并深入讲解。在那里,我们查看了 -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
输出中为每个提交添加一个验证字符串。