我正在使用 git svn,并且需要从主干 merge svn 支持的项目分支。尝试使用 native svn merge 搞砸了,所以我小心翼翼地创建了两个普通的 git 分支,一个来自主干,一个来 self 的项目分支,并在这些新分支之间使用了 git merge。
我现在想检查项目和主干分支之间的更改,但仅限于我创建的 merge 中添加/删除/更改的文件 - 两个分支上都有相当多的工作,尽管实际重叠很少。
我做了以下工作,但感觉不优雅:
$ git diff soa-2237-from soa-2237-to $( git show HEAD |
grep -E '^[-+]{3}' |
cut -c7- |
sort -u)
鉴于我已经完成了 hacky merge ,这个 diff 是否有更优雅的表达方式?
最佳答案
好吧,而不是使用 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 )
如果您遇到名称以 -
开头的文件,这将会有所帮助。 .
请注意,您也可以引用不是您所在分支的第三个分支来执行此操作:
git diff branch1 branch2 -- $( git diff --name-only branch3~1 branch3 )
在这种情况下,您必须命名两个提交进行比较才能获取文件列表,因为默认 HEAD
论证将不适用。
关于git:两次提交之间的差异,仅适用于第三次提交中列出的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14526465/