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

标签 git diff

我正在使用 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/

相关文章:

linux - 仅当存在差异时才通过电子邮件发送两个文件之间的差异输出

git with Beyond Compare (4) on WSL2 Windows 11 打不开repo版本

c++ - 始终使用 Visual Studio 中可用的最新工具集

svn - 对 git merge 使用单独的提交消息是否更好?

java - 仅使用 XMLUnit 区分 XML 标签(无文本或属性)

python - 如何不考虑顺序逐行比较两个文件?

.net - 在 .NET 项目中使用 Subversion TortoiseSVN 合并算法

git 和亚马逊 s3

Git 服务器 Hook : get contents of files being pushed?

python - 如何获取匹配 df ['keys' ] 的差异并为它们创建新列