git:两次提交之间的差异,仅针对第三次提交中列出的文件?

时间:2013-01-25 16:49:17

标签: git diff

我正在使用git svn,需要从trunk合并一个svn支持的项目分支。尝试使用本机svn合并搞砸了,所以我要小心我创建了两个普通的git分支,一个来自trunk,一个来自我的项目分支,并在这些新分支之间使用git merge。

我现在想要检查项目和主干分支之间的变化,但仅针对我创建的合并中添加/删除/更改的文件 - 两个分支上的工作量很大,但实际重叠很少。 / p>

我做了以下的工作,但感觉不是很优雅:

$ git diff soa-2237-from soa-2237-to $( git show HEAD |
       grep -E '^[-+]{3}' |
       cut -c7- |
       sort -u)

鉴于我已经完成了hacky合并,是否有更优雅的表达这种差异?

1 个答案:

答案 0 :(得分:5)

好吧,不是使用git show HEAD | <hacky grep/cut/sort stuff>来获取文件列表,而是使用git diff --name-only HEAD~1,这有点不那么难看,并列出当前{之间有变化的文件名{ {1}}它是第一个父母。

您也应该将文件名与命令的其余部分分开,如下所示:

HEAD

如果您遇到名称以git diff branch1 branch2 -- $( git diff --name-only HEAD~1 ) 开头的文件,那将会有所帮助。

注意,您也可以这样做引用第三个分支,而不是您所在的分支:

-

在这种情况下,您必须将要比较的两个提交命名为获取文件列表,因为默认的git diff branch1 branch2 -- $( git diff --name-only branch3~1 branch3 ) 参数将不适用。