【问题标题】:Coloured Git diff to HTML彩色 Git 差异到 HTML
【发布时间】:2011-01-02 01:19:32
【问题描述】:

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

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

【问题讨论】:

    标签: html git colors diff terminal


    【解决方案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.hstdlib.hstdio.hstring.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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-09-16
            • 2017-07-15
            • 2011-11-30
            • 2011-07-22
            • 2019-12-24
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多