如何查看两个分支之间的差异?

Posted

技术标签:

【中文标题】如何查看两个分支之间的差异?【英文标题】:How can I see the differences between two branches? 【发布时间】:2012-04-07 17:55:22 【问题描述】:

我有两个分支:branch_1branch_2

我怎样才能看到它们之间的区别?

【问题讨论】:

您想要与简单的git diff branch_1 branch_2 不同的东西吗? (注意,如果名称 branch_1 和 branch_2 也命名文件,则需要git diff branch_1 branch_2 -- ***.com/questions/822811/differences-in-git-branches 引用的副本没有回答问题...确定哪些文件已更改为 git diff --name-status master..branchName 与查看分支之间的确切差异与 git diff branch_1 branch_2 之类的内容明显不同。或者也许我遗漏了一些明显的东西...... “重复”不仅是一个不同的问题,这个问题是“git diff 两个分支”的第一名谷歌匹配。 git difftool branch..otherBranch 让您可以看到您选择的可视化工具的不同之处。例如融合。这就是答案。 【参考方案1】:

代码就是git diff master..develop

选项:

您可以添加--name-only 以仅查看文件名。 如果您想查看特定文件或文件夹的更改。然后在末尾添加-- folderOrFileName。 如果你想比较本地分支和远程分支,然后fetch --all获取所有远程分支,然后运行git diff --name-only [branchName]..origin/[branchName]。例如git diff --name-only develop..origin/develop

【讨论】:

【参考方案2】:

这很简单。您只需转到一个分支(例如,main 是您的分支)。

运行命令

git checkout main
git diff branch2

【讨论】:

【参考方案3】:

你想使用git diff。

git diff [<options>] <commit>..​<commit> [--] [<path>…​]

其中&lt;commit&gt; 是您的分支名称、提交的哈希值或速记符号引用

例如git diff abc123…def567git diff HEAD..origin/master

这将产生两个分支的尖端之间的差异。如果您希望找到它们共同祖先的差异进行测试,您可以使用 三个 点而不是 两个

git diff <commit>...<commit>

如果您只想检查哪些文件不同,而不是内容有何不同,请使用--name-only

git diff --name-only <commit>..​<commit>

【讨论】:

相同的语法适用于比较分支与标签或标签与另一个标签。 注意,以上两条命令后还可以添加文件名或文件夹名。 @chiyachaiya 您的解释对我有所帮助,但 git diff b1...b2 与 git diff b2...b1 不同。例如,一旦我们从 b1 启动 b2,并且如果我们对 b1 进行一些更改,git diff b2...b1 将显示在 b2 启动后对 b1 所做的更改。如果我们执行 git diff b1...b2 ,它将对 b2 进行不在 b1 中的更改。 如果你得到fatal: bad revision 'some-branch',那么这可能是一个远程分支。你可能需要git diff remotes/origin/some-branch my-local-branch git diff ..branch_2 将签出的分支与 branch_2 进行比较【参考方案4】:

您可以通过- git diff b1...b2 或者您可以使用以下方式显示提交差异 - git log b1..b2 您可以使用漂亮的图形方式查看提交差异 - git log --oneline --graph --decorate --abbrev-commit b1..b2

【讨论】:

【参考方案5】:

有很多不同的方法来比较分支,这取决于您需要的具体用例。

很多时候你想比较是因为有些东西坏了,你想看看有什么变化,然后修复它,然后在提交之前再次查看变化。

就个人而言,当我想查看差异时我喜欢做什么:

git checkout branch_1 # checkout the oldest branch
git checkout -b compare-branch # create a new branch
git merge --no-commit --squash branch_2 # put files from the new branch in the working folder
git status # see file names that changes
git diff # see the content that changed.

使用此解决方案您将看到差异,您还可以使用git status 仅看到文件名,最重要的部分您将能够在看到差异时执行branch_2(branch_2 在工作树上)。如果出现问题,您可以编辑文件并修复它。任何时候,您都可以再次输入 git statusgit diff 以查看新编辑与 branch_a 的差异。

【讨论】:

以上是关于如何查看两个分支之间的差异?的主要内容,如果未能解决你的问题,请参考以下文章

git导出有差异的文件列表

gitlab查看当前分支和master对比

git 对比两个分支差异

如何用pycharm查看文件修改记录和对比分支差异

git查看远程仓库和本地的区别

git 对比两个分支差异