当前分支和主服务器之间的Git差异,但不包括未合并的主提交

时间:2013-12-27 22:50:28

标签: git version-control merge diff git-diff

我希望在尚未合并为master的分支中进行所有更改的差异。

我试过了:

git diff master
git diff branch..master
git diff branch...master

但是,在每种情况下,diff都包含master中尚未合并到我的分支中的内容。

有没有办法在我的分支和主服务器之间进行差异,排除主服务器中尚未合并到我的分支中的更改?

4 个答案:

答案 0 :(得分:167)

git diff `git merge-base master branch`..branch
{p> Merge basebranchmaster分歧的地方。

Git diff支持以下特殊语法:

git diff master...branch

你不能交换双方因为那样你会得到另一个分支。您想知道branch中的变化,因为它与master不同,而不是相反。

松散相关:


请注意,.....语法与其他Git工具的语义不同。它与man gitrevisions中指定的含义不同。

引用man git-diff

  
      
  • git diff [--options] <commit> <commit> [--] [<path>…]

         

    这是为了查看两个任意<commit>之间的变化。

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

         

    这与之前的表格同义。如果省略了<commit>,则会产生与使用HEAD相同的效果。

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

         

    此表单用于查看包含和最多第二个<commit>的分支上的更改,从<commit>的共同祖先开始。 “git diff A...B”相当于“git diff $(git-merge-base A B) B”。您可以省略<commit>中的任何一个,其效果与使用HEAD相同。

  •   
     

如果您正在做一些奇特的事情,应该注意上面描述中的所有<commit>,除了最后两个使用“..”符号的形式外,可以是任何{{ 1}}。

     

有关拼写<tree>的方法的更完整列表,请参阅gitrevisions[7]中的“指定修订”部分。但是,“diff”是关于比较两个端点,而不是范围,范围符号(“<commit>”和“<commit>..<commit>”)并不表示“指定范围”部分中定义的范围。 gitrevisions[7]

答案 1 :(得分:17)

这对我有用:

git diff origin/master...

这仅显示当前所选本地分支与远程主分支之间的更改,并忽略来自合并提交的本地分支中的所有更改。

答案 2 :(得分:10)

正如John Szakmeister和VasiliNovikov所指出的那样,从师父的角度对您的分支机构进行全面比较的最短命令是:

git diff master...

这将使用您的母版本地副本。

要比较特定文件,请使用:

git diff master... filepath

输出示例:

Example usage

答案 3 :(得分:0)

根据 Documentation

git diff 显示工作树与索引或索引之间的更改 树,在索引和树之间进行更改,在两棵树之间进行更改, 合并导致的更改,两个Blob对象之间的更改,或 在磁盘上的两个文件之间切换。

git diff-两个点..和三个点...之间,在我们比较存储库中的分支或提取请求的方式上存在显着差异。我给你一个简单的例子,轻松地演示它。

示例:假设我们要从master检出新分支并向其中推送一些代码。

  G---H---I feature (Branch)
 /
A---B---C---D master (Branch)
  • 两个点-如果我们想显示当前双方所有更改之间的差异,我们可以使用git diff origin/master..feature或仅使用{{1} }
    输出:({git diff origin/master反对H, I

  • 三个点-如果要显示最后一个共同祖先( A, B, C, D)之间的差异,也就是我们开始新分支的检查点,我们使用{{ 1}},输出:({Agit diff origin/master...feature)。

  • 在大多数情况下,我宁愿使用3个点。