如何在 Git 中比较两个分支?

gitlinuxopen sourcesoftware & coding

协作者会使用多个分支来清晰地区分代码库。有时,我们可能需要合并这些分支,以便将最终工作成果合并到主分支中。在合并之前,务必比较各个分支之间的差异,以避免任何冲突。我们将介绍几种比较两个分支的不同方法 −

  • 列出提交差异 − 此方法显示一个分支中存在但另一个分支中不存在的提交。

  • 列出文件更改 − 此方法比较分支并显示某个文件在两个分支中的差异。

从下图中我们可以很容易地看出,存储库中有两个分支,一个是 ma​​ster 分支,另一个是 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 分支中存在但在 ma​​ster 分支中不存在的提交。

$ 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

相关文章


有用资源