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

git stash

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

这基本上完全涵盖在隐藏和清理中。

git tag

git tag 命令用于为代码历史中的特定点提供永久书签。通常用于发布等内容。

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

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

scroll-to-top