我正在使用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合并,是否有更优雅的表达这种差异?
答案 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 )
参数将不适用。