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

and*_*sel 2 git diff

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

我现在想要检查项目和主干分支之间的变化,但仅针对我创建的合并中添加/删除/更改的文件 - 虽然实际重叠很少,但在两个分支上都有相当多的工作.

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

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

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

twa*_*erg 5

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

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

git diff branch1 branch2 -- $( git diff --name-only HEAD~1 )
Run Code Online (Sandbox Code Playgroud)

如果您遇到名称以?开头的文件,这将有所帮助-.

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

git diff branch1 branch2 -- $( git diff --name-only branch3~1 branch3 )
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您必须将要比较的两个提交命名为获取文件列表,因为默认HEAD参数将不适用.