章节 ▾ 第二版

A3.4 附录 C:Git 命令 - 分支与合并

分支与合并

Git 中实现大部分分支与合并功能的命令只有几个。

git branch

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> 以及你想要合并的单个分支的名称。

我们在 Forked Public Project 的最后介绍了如何进行压缩合并(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 输出中的每个提交。

git stash

git stash 命令用于临时存储未提交的工作,以便在无需在分支上提交未完成的工作的情况下清理您的工作目录。

这基本上完全在 储藏和清理 中进行了介绍。

git tag

git tag 命令用于为代码历史记录中的特定点提供永久书签。 通常,这用于诸如发布之类的事件。

该命令在 标签 中进行了介绍和详细讲解,我们在 标记您的发布 中实际使用它。

我们还介绍了如何在 签署您的工作 中使用 -s 标志创建 GPG 签名标签,并使用 -v 标志验证一个标签。

scroll-to-top