彩色 Git 差异到 HTML
Posted
技术标签:
【中文标题】彩色 Git 差异到 HTML【英文标题】:Coloured Git diff to HTML 【发布时间】:2011-01-02 01:19:32 【问题描述】:我喜欢使用git diff --color-words
来清楚地查看文件中已更改的单词:
但是,我想与没有 git 或彩色终端的人分享这个差异。那么有人知道可以将颜色转义的终端输出转换为html的工具或技巧吗?
【问题讨论】:
【参考方案1】: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/
。
【讨论】:
很高兴你喜欢它 :) 你可以在这里看到一些示例用法:pixelbeat.org/docs/terminal_colours 我几天来一直在寻找类似的东西来生成自动 LaTex 差异。这是我本周最好的发现。谢谢! 这还能用吗?我收到一些 sed 错误: sed: 2: " s#\x1b[^\x1b]*\x1b\\## ...": 替代命令中的错误标志:'#' sed: 15: " # escape HTML s#\\&a ...": 替换命令中的错误标志:'#' sed: 43:" :ansi_to_span #replac ...": 意外的 EOF(待处理的 ) 我发现使用这个脚本我得到了最好的布局:git diff f0f7dfb4 43f7949 --color | ./ansi2html.sh > changes.html
Latex 用户有时会排很长的队。如果添加 |折叠 -w 80 -s |作为管道的一部分,它将自动换行彩色线条。【参考方案2】:
下载 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
所以...这正是你想要的;)
【讨论】:
flickr.com/photos/hendry/4250699527 我不接受diff2html
,因为它看起来很糟糕。
这看起来也很糟糕。我希望它看起来像我上面的终端屏幕截图。
我还是不喜欢。我确信我需要编写某种 ANSI 转义到 HTML 转换器。
非常感谢您帮助米歇尔。你被赶到了岗位。 :)
diff2html 是一个很棒的脚本,可以轻松修改以产生任何结果。【参考方案3】:
如果您想查看具有行相似性匹配、更好的单词比较、语法高亮和更多请查看diff2html,这是非常可自定义 git diff to HTML Presenter。
要在命令行上使用它,您可以查看diff2html-cli,这是一个用 Node.js 编写的简单 CLI。
因此您可以与与diffy.org 集成的同事分享您的差异。
查看差异示例here。
【讨论】:
谢谢,这是一个很棒的工具。如果能增加对 Windows 下差异的支持(在 --- 和 +++ 行之后引用路径),那就太好了。 除了npm
之外,是否可以通过其他方式安装diff2html?
@dokaspar 不是真的。您可以直接运行 js,但最终 npm 是唯一支持的包管理器。【参考方案4】:
不知道任何工具可以完全按照您的意愿行事。但这里有一段代码我经常用来输出 html 格式的彩色差异:simplediff
它在 php 和 Python 中可用。输出使用 <del>
和 <ins>
标签标记差异,因此您可以使用 CSS 轻松为它们着色。
【讨论】:
很遗憾没有简单的 diff 包装器来制作彩色 diff(html 或终端)。【参考方案5】:我刚刚在 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
它很小的下载大小 (self-contained C file,只有 4 个包括:errno.h
、stdlib.h
、stdio.h
和 string.h
,以及仅依赖于 libc。美女!
【讨论】:
【参考方案6】:您可能想查看 github 项目 rmed,它提供了一个命令行工具,可以使用 vimdiff 生成静态可共享的 html 差异。
【讨论】:
【参考方案7】:我创建了一个 perl 脚本来为 git diff 生成 html 表。要首先使用此脚本,您必须使用 git diff sha1s... > diff.file 收集差异,然后运行 diff2html.pl diff.file。 访问:
http://kernel-demystified.com/forum/index.php/topic,23.msg28.html#new
【讨论】:
Unable to determine IP address from host name kernel-demystified.com
【参考方案8】:
当我使用 git bash 时,如果您使用 git show
,您只需复制并粘贴控制台中显示的内容,它就会正确复制颜色。
【讨论】:
【参考方案9】:我知道这个问题很老了。但是,如果您使用的是 PHP,我刚刚共享了一个简单的渲染器,它为本地 git diff 控制台输出添加了一些样式:https://github.com/nrctkno/git-diff-renderer。
【讨论】:
以上是关于彩色 Git 差异到 HTML的主要内容,如果未能解决你的问题,请参考以下文章
Windows下GIT配置BeyondCompare为默认差异比较工具和合并工具