2

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

我现在想检查项目和主干分支之间的更改,但仅针对在我创建的合并中添加/删除/更改的文件 - 在两个分支上都做了很多工作,尽管实际上几乎没有重叠。

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

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

鉴于我已经完成了 hacky 合并,这个 diff 是否有更优雅的表达方式?

4

1 回答 1

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 )

如果您遇到名称以-.

请注意,您也可以引用不是您所在的第三个分支来执行此操作:

git diff branch1 branch2 -- $( git diff --name-only branch3~1 branch3 )

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

于 2013-01-25T19:56:58.107 回答