Git
章节 ▾ 第二版

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

分支与合并

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

git branch

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-signaturegit log 输出中的每个提交添加一个验证字符串,具体取决于它是否已有效签名。

git stash

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

这基本上完全在 暂存和清理 中介绍。

git tag

git tag 命令用于为代码历史记录中的特定点添加永久书签。通常,这用于版本发布等操作。

此命令在 标签 中进行了介绍和详细介绍,并且我们在 标记您的版本 中实际使用它。

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

scroll-to-top