2014-03-19 45 views
1

我需要向需要检查PR的人展示我修复的冲突。 有没有办法用git在文本文件中导出所有的冲突?在文本文件中导出GIT中的所有冲突

我需要的是一个包含合并

+0

你有没有考虑过使用补丁文件? –

+0

确实补丁文件会显示更改,但不会显示冲突合并的结果?我的意思是我会看到原始文件(合并之前)和最终版本:我不会看到我修复的冲突。 – James

回答

1

使用的git diff --name-only --diff-filter=U的组合,其列出了未合并的冲突和cat文件:

您应该结束了的东西,如:

git diff --name-only --diff-filter=U | xargs cat 

而且有在文件中的一切,只是重定向输出:

git diff --name-only --diff-filter=U | xargs cat > conflicts.diff 

或者只是将zip文件ES

git diff --name-only --diff-filter=U | xargs zip -r9 conflicts.zip 
1

你说的“出口...所有的冲突”的意思后,冲突中的所有文件的“猫”的文本文件?

  • 您的意思是冲突文件列表吗?

    然后使用git status --short(简洁)或只是git status,并将其输出到管道(git status >/tmp/conflicts.txt)。

  • 你的意思是你的修补程序与你所做的工作来解决冲突?

    然后记录一个或多个修改冲突的提交(可能在临时分支上),然后使用git format-patch <base_commit>..<current_tip>

  • 你的意思是与嵌入冲突标记一样的文件?

    然后从git status中识别这些文件,并从工作树中复制它们。

+0

对,我需要得到第三种方法的结果。我想知道是否有更快的方法来做到这一点 – James

+0

@詹姆斯,恐怕不是因为,说实话,你的需求似乎很不寻常。但不要害怕 - Git是高度可编写脚本的。你可以编写一个相当简单的程序来调用'git status --porcelain'(Git版本之间的输出保证是稳定的),解析它以检测冲突的路径,并且将它们输出到它的标准输出流,以便你可以做一些像'./print-conflicting-paths | xargs zip -r9/tmp /冲突。zip' – kostix

+0

@James,请查阅['git-status'](https://www.kernel.org/pub/software/scm/git/docs/git-status.html)手册页。实际上,它的'-z'命令行选项可能更适用于机器处理(但* *不包含POSIX shell,这对于'NUL'来说是非常糟糕的)。机器可读的格式将被详细解释。 – kostix

2

你可以用这一个,以及:

git diff --name-only --diff-filter=U | xargs awk '/<<<<< HEAD/,/>>>>>>/'

这减少了冲突,从文件(提供冲突地区开始在>>>>>><<<<< HEAD和结束),所以你可以把它们扔掉到一个新的文件 - 如果原始文件是巨大的,你只需要显示冲突便利。

+0

正是我所需要的 - 编辑你的文章 - 希望你不介意:) –