回答
使用的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
你说的“出口...所有的冲突”的意思后,冲突中的所有文件的“猫”的文本文件?
您的意思是冲突文件列表吗?
然后使用
git status --short
(简洁)或只是git status
,并将其输出到管道(git status >/tmp/conflicts.txt
)。你的意思是你的修补程序与你所做的工作来解决冲突?
然后记录一个或多个修改冲突的提交(可能在临时分支上),然后使用
git format-patch <base_commit>..<current_tip>
。你的意思是与嵌入冲突标记一样的文件?
然后从
git status
中识别这些文件,并从工作树中复制它们。
对,我需要得到第三种方法的结果。我想知道是否有更快的方法来做到这一点 – James
@詹姆斯,恐怕不是因为,说实话,你的需求似乎很不寻常。但不要害怕 - Git是高度可编写脚本的。你可以编写一个相当简单的程序来调用'git status --porcelain'(Git版本之间的输出保证是稳定的),解析它以检测冲突的路径,并且将它们输出到它的标准输出流,以便你可以做一些像'./print-conflicting-paths | xargs zip -r9/tmp /冲突。zip' – kostix
@James,请查阅['git-status'](https://www.kernel.org/pub/software/scm/git/docs/git-status.html)手册页。实际上,它的'-z'命令行选项可能更适用于机器处理(但* *不包含POSIX shell,这对于'NUL'来说是非常糟糕的)。机器可读的格式将被详细解释。 – kostix
你可以用这一个,以及:
git diff --name-only --diff-filter=U | xargs awk '/<<<<< HEAD/,/>>>>>>/'
这减少了冲突,从文件(提供冲突地区开始在>>>>>>
<<<<< HEAD
和结束),所以你可以把它们扔掉到一个新的文件 - 如果原始文件是巨大的,你只需要显示冲突便利。
正是我所需要的 - 编辑你的文章 - 希望你不介意:) –
- 1. Git合并不标记冲突文本文件中的所有差异
- 2. 放弃源代码树或git中的所有冲突文件
- 3. 删除git中的文件冲突
- 4. git rebase和文件冲突
- 5. 共享git文件冲突
- 6. git标记为冲突的所有文件
- 7. 导入文件名冲突
- 8. 如何在git中合并分支中的冲突文件?
- 9. Git合并冲突的文件时拉
- 10. git合并与.class文件的冲突
- 11. 在git中有冲突的分支
- 12. git冲突 - 在HEAD中删除文件并在版本中修改
- 13. 在GIT中解决文件冲突的一部分
- 14. JQuery文件版本冲突
- 15. 在Git中,有没有办法自动将合并冲突中的所有新文件标记为正确?
- 16. Git pull只覆盖冲突文件
- 17. Git合并与Yaml文件冲突
- 18. 二进制文件冲突 - git
- 19. Git与程序集DLL文件冲突
- 20. git忽略导致合并冲突的文件
- 21. 如何在git合并提交中列出冲突的文件(父母双方都有更改的文件)?
- 22. git签出某些文件尽管存在冲突
- 23. Git合并除一个文件以外的所有文件,并且该文件成为(完整)冲突文件
- 24. 如何在Git中列出文件中的所有更改
- 25. 告诉git在出现冲突时始终拉取文件的远程版本
- 26. 冲突文件
- 27. 的Javascript冲突在两个文件中
- 28. Git svn rebase导致冲突
- 29. Git自动合并失败(给出冲突)几乎所有文件只在一个分支中改变
- 30. 如何GIT-DIFF对“他们”的文件版本解决冲突
你有没有考虑过使用补丁文件? –
确实补丁文件会显示更改,但不会显示冲突合并的结果?我的意思是我会看到原始文件(合并之前)和最终版本:我不会看到我修复的冲突。 – James