如何在 Git 中比较两个分支?
协作者会使用多个分支来清晰地区分代码库。有时,我们可能需要合并这些分支,以便将最终工作成果合并到主分支中。在合并之前,务必比较各个分支之间的差异,以避免任何冲突。我们将介绍几种比较两个分支的不同方法 −
列出提交差异 − 此方法显示一个分支中存在但另一个分支中不存在的提交。
列出文件更改 − 此方法比较分支并显示某个文件在两个分支中的差异。
从下图中我们可以很容易地看出,存储库中有两个分支,一个是 master 分支,另一个是 feature 分支。图中显示了每个提交及其对应的提交消息。从图中可以清楚地看出,初始提交的哈希值为"9260faa"。

以下命令可用于获取类似的分支图形表示。
$ git log −−oneline feature −−all −−graph
在下面的输出中,"*"表示提交,我们可以看到有 4 个星号,这意味着有 4 个提交。"9260faa"是初始提交。从初始提交出现了两个分支,左侧是主分支,右侧是功能分支。
delI@DESKTOP-N961NR5 MINGW64 /e/tut_repo (master) $ git log −−oneline feature −−all −−graph * 0f26bbe (HEAD −> master) bonjour add |* eOccfce (feature) howdy file add |* 71b4d39 how are you added |/ * 9260faa hello. txt
列出提交差异
在某些时候,功能分支必须合并到主分支,因为这是我们的主要工作。使用 git log 命令列出提交差异的语法如下 −
$ git log <branch1>..<branch_2>
以下命令比较两个分支,并返回 feature 分支中存在但在 master 分支中不存在的提交。
$ git log master..feature −−oneline
输出如下所示 −
e0ccfce (feature) howdy file add 71b4d39 how are you added
列出文件差异
如果我们想根据对文件执行的更改来比较两个分支,我们需要使用 diff 工具。使用 diff 工具的语法是 −
$ git diff <branch_name>
以下命令列出当前分支 (master) 和 feature 分支中文件的差异。
$ git diff feature
这将提供非常详细的差异。如果我们不想查看详细的差异,而只想知道哪些文件不同,请使用 −−name−only 命令。如下例所示。
$ git diff −−name−only feature
输出结果如下所示:−
bonjour.txt hello.txt howdy.text
−−name−status 标志可与 diff 工具一起使用,以显示文件名及其状态。
$ git diff −−name−status feature
输出结果如下所示。左列显示文件状态,右列显示文件名称。
表示该文件存在于当前分支中,但在另一个分支中不可用。
表示该文件已被修改,且其内容在两个分支中不同
表示该文件已从当前分支中删除,但在另一个分支中可用。
dell@DESKTOP−N961NR5 MINGW64 /e/tut_repo (master) S git diff −−name−status feature A bonjour . txt M hello. txt D howdy. text dell@DESKTOP−N961NR5 MINGW64 /e/tut_repo (master) $ git diff −−name−only feature bonjour. txt hello.txt howdy. text
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

