彩色Git diff到HTML

时间:2010-01-06 13:13:21

标签: html git colors diff terminal

我喜欢使用git diff --color-words清楚地看到文件中已更改的字词:

Screenshot

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

9 个答案:

答案 0 :(得分:82)

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/

答案 1 :(得分:11)

下载diff2html,使用以下命令解压缩并将diff转换为html:

$ diff2html file1.txt file2.txt > diff-demo1.htm

还有更多......看看this问题。

gitting后

git diff --color-words --no-index orig.txt /tmp/edited.txt > myfile

this位置下载ansifilter。并使用此命令将myfile转换为html格式

ansifilter -i myfile -H -o myfile2.html

所以......这正是你想要的;)

答案 2 :(得分:3)

不知道任何工具可以完全按照您的意愿行事。但这是我经常使用的一段代码输出html格式的彩色差异:simplediff

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

答案 3 :(得分:3)

如果您希望清除差异行相似性匹配更好的词比较语法突出显示和更多查看diff2html这是非常可自定义的 git diff到HTML演示者。

要在命令行中使用它,您可以检查diff2html-cli这是一个用Node.js编写的简单CLI。

因此,您可以与其与diffy.org集成的同事分享您的差异。

查看差异样本here

答案 4 :(得分:2)

我刚刚在 debian 存储库中找到了 aha;这很简单:

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) 让我很好奇,所以我偷看了它的来源:它是一个 self-contained C file,只有 4 个包含:errno.hstdlib.h、{{1 }} 和 stdio.h,并且仅依赖于 libc。美丽!

答案 5 :(得分:1)

我已经创建了一个perl脚本来为git diff生成html表。要首先使用此脚本,您必须使用git diff sha1s收集差异...&gt; diff.file,然后运行diff2html.pl diff.file。 访问:

http://kernel-demystified.com/forum/index.php/topic,23.msg28.html#new

答案 6 :(得分:1)

你可能想要检查github项目rmed,它提供了一个命令行工具,使用vimdiff生成静态可共享的html差异。

答案 7 :(得分:0)

当我使用git bash时,如果你使用git show,你只需要复制并粘贴控制台中显示的内容,它就会正确复制颜色。

答案 8 :(得分:0)

我知道这个问题很老了。但是,如果您使用的是 PHP,我刚刚分享了一个简单的渲染器,它为本地 git diff 控制台输出添加了一些样式:https://github.com/nrctkno/git-diff-renderer .