彩色 Git 与 HTML 的区别

我喜欢使用 git diff --color-words来清楚地看到文件中已经改变的单词:

Screenshot

然而,我想与没有 git 或颜色终端的人分享这个差异。那么,有人知道一种可以将 彩色转义终端输出转换成 HTML 的工具或技巧吗?

44831 次浏览

不知道有什么工具可以完全满足你的需求。但是这里有一段代码,我经常用来输出 html 格式的彩色差异: 很简单

它可以在 PHP 和 Python 中使用。输出使用 <del><ins>标记标记差异,因此您可以使用 CSS 轻松地为它们着色。

下载 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 排除颜色。

注意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/

我已经创建了一个 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,你只需要复制和粘贴控制台中显示的内容,它就会正确地复制颜色。

我知道这个问题很古老。但是,如果您正在使用 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.hstdlib.hstdio.hstring.h,并且只依赖于 libc。漂亮!