如何查看两个分支之间的差异?
Posted
技术标签:
【中文标题】如何查看两个分支之间的差异?【英文标题】:How can I see the differences between two branches? 【发布时间】:2012-04-07 17:55:22 【问题描述】:我有两个分支:branch_1
和 branch_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>…]
其中<commit>
是您的分支名称、提交的哈希值或速记符号引用
例如git diff abc123…def567
或git 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 status
或 git diff
以查看新编辑与 branch_a
的差异。
【讨论】:
以上是关于如何查看两个分支之间的差异?的主要内容,如果未能解决你的问题,请参考以下文章