我对你的最终目标有些困惑,但我想我可以提供一个答案。
如果您想在合并发生冲突时得到一个很好的更改报告,即所有内容仍未提交,则应使用git status --porcelain
。它给出了一个很好的,机器可读的所有文件及其状态列表(包括合并冲突状态),并且有详细记录的in the manpage。根据您的使用情况,您甚至可以使用git merge --no-commit
以确保在继续(提交)之前有机会检查合并结果。您还可以使用git diff HEAD --numstat
来获取按文件添加/删除的行数的机器可读报告。
如果你要检查的事后合并,这是一个非常不错的使用情况git diff-tree
:
git diff-tree -c --numstat <commit>
的-c
它告诉给差异合并提交对阵双方家长和--numstat
让你一个不错的机器可读的输出像以前一样。
最后,如果您想要生成非常详细的冲突报告,您可以通过-p
而不是--numstat
,为您提供完整的补丁输出。这是您在gitk
中会看到的一种补丁,每行开头有两个字符,表示该行是否相对于每个父代添加/删除。仅来自一个父代的更改只有一个符号(例如'+ '
,' -'
,为使空格可见而添加的引号),而作为冲突解决方案的一部分手动更改的行将有两个(--
,++
)。如果你真的需要,你可以自己解析它。 (不幸的是,我不认为在合并提交时类似于--numstat
。)
'git diff --numstat branchA branchB'可用于机器消耗 – knittl 2011-04-12 16:28:10