【发布时间】:2020-09-05 07:10:21
【问题描述】:
我一直想知道,GitHub 如何显示两次提交之间的差异,它将删除的行涂成红色,添加的行涂成绿色。我有一个项目,我想做类似的事情,怎么做?有人能解释一下背后的逻辑吗?
【问题讨论】:
标签: python css user-interface github diff
我一直想知道,GitHub 如何显示两次提交之间的差异,它将删除的行涂成红色,添加的行涂成绿色。我有一个项目,我想做类似的事情,怎么做?有人能解释一下背后的逻辑吗?
【问题讨论】:
标签: python css user-interface github diff
我相信 Github 使用 git diff,默认情况下使用 Myers algorithm。还有其他类似的算法可以做到这一点(git diff 实现了其中的一些),它们都有点复杂。我不建议您尝试为自己的项目实施其中任何一个(除非您想将其作为挑战/学习)。
如果你需要在你自己的项目中做一个 diff,我只会环绕 git diff 或 unix diff command,或者使用其他一些包。例如,Python 有一个不错的模块 difflib 似乎可以做到这一点。
【讨论】:
你到底是什么意思?使用 CSS 着色就像设置 background-color 一样简单,所以我想这不是你想要的。
如果您要“查找两个文本文件之间的差异”,那么正确的搜索词应该是“diff”:一个旧的 unix 工具,用于显示两个文件之间的差异。如果您有 Linux shell 可供使用,请尝试 diff -Naur file1.txt file2.txt - 这将向您显示类似于 github 上的差异的输出。
如果您在 python 中需要它,请查看https://pypi.org/project/diff-match-patch/
【讨论】: