Github如何生成小分支差异?

时间:2015-02-12 02:09:09

标签: git github diff

假设我按以下顺序处理项目:

  1. 叉主人到分支名为BRANCH-A
  2. 将BRANCH-B合并为主人
  3. 将BRANCH-C合并为主人
  4. 在BRANCH-A上做一些工作并提交拉取请求
  5. 现在,如果我在本地签出BRANCH-A并运行git diff master,那么差异将包括来自BRANCH-B和BRANCH-C的文件,这些文件在master中但不在我的分支中。

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

    Github如何产生这种差异?如何在命令行重现它?

1 个答案:

答案 0 :(得分:1)

您可以在分支[1]的分支点和分支by separating both names with three dots的当前头部之间创建差异:git diff master...a

比较

[timwolla@/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

[timwolla@/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)来获得与三个点相同的效果。