2015-02-12 69 views
0

比方说,我在下面的顺序一个项目:Github如何生成小分支差异?

  1. 叉主分支命名BRANCH-A
  2. 合并分支-B掌握
  3. 合并分支-C掌握
  4. 待办事项分支-A的一些工作,并提交pull请求

现在,如果我签分公司-A在本地并运行git diff master的差异将包括来自BRANCH-B和分支C文件,其在主人,但不在我的分支。

但是,如果我在Github上检查相同的差异,它会在生成已更改文件列表和视觉差异时排除BRANCH-B和BRANCH-C的更改。

Github如何生成此差异?我如何在命令行重现它?

回答

1

可以其中一个分支被分支的[1]和分支by separating both names with three dots的当前头部的点之间创建一个diff:git diff master...a

比较:

[[email protected]/t/test (a)]git diff master..a 
diff --git a/a b/a 
new file mode 100644 
index 0000000..e69de29 
diff --git a/a2 b/a2 
new file mode 100644 
index 0000000..e69de29 
diff --git a/b b/b 
deleted file mode 100644 
index e69de29..0000000 
diff --git a/c b/c 
deleted file mode 100644 
index e69de29..0000000 

[[email protected]/t/test (a)]git diff master...a 
diff --git a/a b/a 
new file mode 100644 
index 0000000..e69de29 
diff --git a/a2 b/a2 
new file mode 100644 
index 0000000..e69de29 

[1]这是“最新”的共同祖先,可以通过以下方式检索:git merge-base master a。您也可以使用git diff $(git merge-base master a)来达到与三个点相同的效果。

+0

整洁!感谢分享! – 2015-02-12 03:53:56