Comparing two branches in Git?
本问题已经有最佳答案,请猛点这里访问。
我有两个分支,第一个分支。
我想看看GIT两个分支之间的区别。
- 你想要和直截了当的
git diff branch_1 branch_2 不同的东西吗?(注意,如果名称分支1和分支2也有名称文件,则需要git diff branch_1 branch_2 -- ) - stackoverflow.com/questions/822811/git branch‌&8203;es中的差异
- 引用的副本没有回答问题…使用
git diff --name-status master..branchName 确定哪些文件发生了更改,与使用git diff branch_1 branch_2 之类的工具查看分支之间的确切差异明显不同。或者我错过了一些明显的… - "复制"不仅是一个不同的问题,这个问题也是谷歌对"Git diff两个分支"的头号匹配。
git difftool branch..otherBranch 允许您看到您选择的可视化工具中的差异。例如,meld.这就是答案。- 有人能解释一下Git Diff与其他比较分支的方法有什么不同吗?
1 | git diff branch_1..branch_2 |
这将产生两个分支尖端之间的差异。如果您希望找到他们共同祖先的差异进行测试,可以使用三个点而不是两个点:
1 | git diff branch_1...branch_2 |
号
- 同样的语法也适用于将一个分支与一个标记或一个标记与另一个标记进行比较。
- range语法也适用于
git log 。通过它,您可以看到提交消息,通过--patch 选项,您可以看到一次提交一个不同的提交。 - 请注意,您也可以在上述两个命令之后添加文件或文件夹名。
- 因此,如果三重点差异没有发现共同的祖先差异,那么这意味着
branch_1 已经包含了branch_2 中的所有变化,而git merge branch_2 中的所有变化(branch_1 已签出)根本不会影响branch_1 。 - @Danielzohar是的,它应该与任何有效的提交引用一起工作!git-scm书籍称它们为"tree-ish"或"coimmit-ish"。如
tags 、branches 、sha1 s、缩写sha1 s、神奇如HEAD 等。(尽管你现在可能已经知道了,因为你一年前发布了。) - 对于远程分支,这不适用于我。它从不归还任何东西。
- @Chiyachaiya你的解释帮助了我,但是Git Diff b1…b2和Git Diff b2…b1不一样。例如,一旦我们从b1启动b2,当我们对b1进行一些更改时,git diff b2…b1将显示b2启动后对b1所做的更改。如果我们执行git diff b1…b2,它将对b2进行更改,而b2不在b1中。
- 我也发现一些有用的方法是使用
git diff branch_1..branch_2 > C:\diff.txt 将差异打印到一个文件中。 - 如果你使用一个,你就会得到一个错误。
- chharvey:args的顺序很重要,并且会在结果中以不同的颜色反映出来(绿色与红色),因为添加/删除的代码取决于args的顺序。
- github.com/schacon/gitbook/blob/…schacon.github.io/gitbook/3_比较_u commits_uugit_diff.htm‌&8203;l的逐字复制
- 如果你得到
fatal: bad revision 'some-branch' ,那么这可能是一个远程分支。你可能需要像git diff remotes/origin/some-branch my-local-branch 这样的东西 - 他们是一个很好的用户界面吗?
- 为什么它只在主分支机构工作?!(git 2.1.4)我有两个repo,是从同一个repo克隆的。一个有主人退房,另一个有……其他"。来自'other'分支:$git diff other..master fatal:不明确的参数'other..master':未知修订或路径不在工作树中。
- 显然,自从这个答案以来,有些东西已经改变了,因为$git diff b1 b2致命:不明确的参数"b2":未知的修订或路径不在工作树中。$git diff b1 b2 fatal:错误的修订版"web portal hosts"$git diff b1..b2 fatal:不明确的参数"b1..b2":未知的修订版或路径不在工作树中。$git diff b1..b2—致命:错误的修订版"ui-functional tests..web-portal-hosts"
- 如果你想看一个特定文件在两个分支之间的区别:
git diff branch_1..branch_2 -- filename 。 - 这个答案对我没有帮助。我改为这样做:先是
git checkout local-branch ,然后是git log ,看你想看哪个承诺,然后,git diff master ,这就是你在每个承诺中,与master相比,可以准确地看到你对分支所做的更改。(除了我,没有其他人使用我的本地分支机构。) - 两个点、三个点和两个破折号都会产生"不在工作树中的未知修订或路径"。这个工具怎么坏了?
- git difftool-y b1..b2(与配置的difftool一起使用-在我的例子中是p4merge)
- 不起作用:
fatal: ambiguous argument 'branch1...branch2': unknown revision or path not in the working tree. 。 - 如果这两个分支非常不同,那么提到分支的顺序并不重要。但是,如果您知道一个分支比另一个分支旧,那么如果您使用
git diff .. ,就更容易理解输出。 git diff ..branch_2 将已签出的分支与分支2进行比较。- 在提出答案的原文中,
branch_2 被命名为test 。如本文所述,第二句话毫无意义。 - @Saadrehmansha,我不需要"--filename"来查看特定文件的更改。git diff
。 ^^这就足够了。希望这有帮助。 - 我不知道这两者有什么区别。而且…基于此答案。
- 如果您有
fatal: ambiguous argument 错误,您只需按照dalin的意见并指定remotes/origin (或者您的远程回购被称为什么)。 - 这在命令提示中很难使用。在GUI(如WinMerge)中也可以这样做吗?使用sourcetree for git?
- 我该如何转义一个包含点
. 的分支名称?新问题已询问stackoverflow.com/questions/51864116/… - "不同于他们的共同祖先"实际上是什么意思?图片/图表?谢谢