如何使git diff显示与github的pull request diff相同的结果?

时间:2016-06-11 12:39:19

标签: git github git-diff

合并分支后,当我尝试发出拉取请求时,github不再显示差异,但git diff仍会显示差异。

例如我有分支D,在分支H上创建了修补程序,将H合并到D,然后在D上创建了更多内容。现在git hub pull reuqest从H到D显示没有区别,但git diff HD显示差异。

我要做的是创建一个命令行工具,以查看哪些旧分支(可能有很多分支)没有代码差异来开发。现在我必须去github,做一个拉动reuqest并选择每个分支,看看是否有差异。

由于

2 个答案:

答案 0 :(得分:14)

你可能想要"三点"语法:

git diff D...H

另见What are the differences between double-dot ".." and triple-dot "..." in Git diff commit ranges?

答案 1 :(得分:0)

我要做的是创建一个命令行工具,以查看哪些旧分支(可能很多)没有代码差异可以开发。

要实现此目标,您还可以使用:

git log --oneline --no-merges branch1 ^master

这将以{'1>上的 而不是{{1上的branch1表示的一种行格式显示所有提交(不包括合并) }}分支。与^master相似,如果没有要显示的更改(在本例中为提交),则输出为空白。

我还有更多示例in my dotfiles project here。例如:

查找一个分支但不另一个上的所有GIT提交!
[关键字:git在一个分支上提交,但不在另一个分支上,git在一个分支上提交,不在一个分支上,但不在另一个分支上提交]

  1. git diff
    显示仅在branch1上的所有提交,但不显示在branch2或branch3上的所有提交,由于它们不是新更改,因此将省略所有合并提交!请参阅:Using Git, show all commits that are in one branch, but not the other(s) <==========超级有用,它可以看出分支更改的内容! ============ 例如,这非常有用,可以看到我们已添加到一个长期运行的发行分支“ branch1”中的所有功能提交,我们已在该分支中定期合并最新的master。现在,我们可以看到哪些提交在任何给定分支中,但不在master中!例如:
  2. git difftool
    显示branch1中所有不在master中的非合并提交!
  3. git log --no-merges branch1 ^branch2 ^branch3
    与上述相同,但每次提交仅显示一行! <=======很棒! (&SIMPLEST)========
  4. git log --no-merges branch1 ^master
    与上面相同,但是使用git log --oneline --no-merges branch1 ^branch2 ^branch3 git别名来显示带有额外信息的压缩(单行)输出! <=======最好! (也许)========
上方的

git lg --no-merges branch1 ^branch2 ^branch3来自此处:https://coderwall.com/p/euwpig/a-better-git-log。要将其“安装”为git别名,只需运行:

git lg

超级有用!