我喜欢使用 git diff --color-words来清楚地看到文件中已经改变的单词:
git diff --color-words
然而,我想与没有 git 或颜色终端的人分享这个差异。那么,有人知道一种可以将 彩色转义终端输出转换成 HTML 的工具或技巧吗?
不知道有什么工具可以完全满足你的需求。但是这里有一段代码,我经常用来输出 html 格式的彩色差异: 很简单
它可以在 PHP 和 Python 中使用。输出使用 <del>和 <ins>标记标记差异,因此您可以使用 CSS 轻松地为它们着色。
<del>
<ins>
下载 def2html,解压缩它并使用以下命令将 diff 转换为 html:
$ diff2html file1.txt file2.txt > diff-demo1.htm
还有更多... 看看 这个的问题。
或者 在给出之后:
git diff --color-words --no-index orig.txt /tmp/edited.txt > myfile
从 这个位置下载两个 ansifilter,并使用此命令将 myfile 转换为 html 格式
ansifilter -i myfile -H -o myfile2.html
所以... ... 这正是你想要的;)
wget "http://www.pixelbeat.org/scripts/ansi2html.sh" -O /tmp/ansi2html.sh chmod +x /tmp/ansi2html.sh git diff --color-words --no-index orig.txt edited.txt | \ /tmp/ansi2html.sh > 2beshared.html
我真正需要的是一个从 ANSI到 HTML 的转换器,我在 http://www.pixelbeat.org/上找到了一个非常不错的转换器。
注意: 除非包含 --color或 --color-words,否则您可能看不到任何着色,这可能是因为管道导致 git diff 排除颜色。
--color
--color-words
注意2: 您可能需要安装 gnu sed 和 awk,特别是在 Mac 上。这样做与 brew install gnu-sed gawk。您可能还需要手动将它们添加到路径中,例如使用 ln -s /usr/local/Cellar/gnu-sed/4.2.2/bin/gsed /usr/local/bin/。
brew install gnu-sed gawk
ln -s /usr/local/Cellar/gnu-sed/4.2.2/bin/gsed /usr/local/bin/
我已经创建了一个 perl 脚本来为 git diff 生成 html 表。为了首先使用这个脚本,您必须使用 git diff sha1s... > aff.file 收集 diff,然后运行 def2html.pl eff.file。 参观:
Http://kernel-demystified.com/forum/index.php/topic,23.msg28.html#new
如果你想看到 差别很大与 线段相似性匹配线段相似性匹配,更好的词语比较,语法高亮和更多查看 Diff2html,这是非常 可定制的 git 差异到 HTML 演示者。
要在命令行上使用它,可以选中 (html-cli),它是用 Node.js 编写的一个简单的 CLI。
因此,您可以与它与 Diffy.org集成的同事分享您的差异。
检查一个不同的样本 给你。
您可能需要检查 github 项目 Rmed,它提供了一个命令行工具,可以使用 vimdiff 生成静态的可共享 html 差异。
当我使用 git bash 时,如果你使用 git show,你只需要复制和粘贴控制台中显示的内容,它就会正确地复制颜色。
git show
我知道这个问题很古老。但是,如果您正在使用 PHP,我刚刚分享了一个简单的渲染器,它为原生 git diff 控制台输出添加了一些样式: https://github.com/nrctkno/git-diff-renderer。
我刚刚在 debian 存储库中发现了 啊哈,它很简单:
git diff --color | aha > white.html # white background git diff --color | aha --black > black.html # black background git diff --color | aha --pink > pink.html # pink background
它极小的下载大小(< 20KB)让我很好奇,所以我偷看了它的来源: 它是一个 自包含的 C 文件,只有4个包括: errno.h,stdlib.h,stdio.h和 string.h,并且只依赖于 libc。漂亮!
errno.h
stdlib.h
stdio.h
string.h