git - git 中的 CVS 样式差异

标签 git cvs

有没有办法让git diffs的输出格式像cvs风格的diffs一样?我发现 git diffs 的可读性较差。此外,more 中出现的 git diffs 很烦人 - 我该如何禁用它?

最佳答案

git diff使用“通用”格式,diff -u , 默认情况下。 cvs diff使用较旧的标准差异格式(删除标记为 < 的行,添加标记为 > 的行,每个差异周围没有上下文)。

您可以使用 git diff -c 获得“上下文差异” , 或 git diff -C5 ,例如,获取 5 行上下文而不是默认的 3 行。

diff --normal (至少如果你使用 GNU diffutils)会产生一个老式的 diff,但是 git diff似乎不认识 --normal选项。

就我个人而言,我发现上下文差异比旧式差异更具可读性,所以我从未发现需要将旧式差异与 git diff 一起使用.尝试 git diff -c (连同 haggai_e 禁用寻呼机的建议)。

如果您真的想要旧式差异( <> ,没有上下文),可能有一种方法可以做到。

编辑:

如果git diff不做你想做的,你可以提取文件修订的副本,并使用你喜欢的任何 diff 工具。我自己的 get-versions 工具可以从 git(或从 RCS 或 CVS)中提取文件的多个版本。

这是另一种解决方案,尽管它有点复杂。例如,我已经为 git 克隆了 git 仓库。本身。如果我想比较顶级 README 的两个连续版本文件,我可以这样做:

$ diff --normal <(git show 779d7e93773a0dcf918dc77023511fdc68161bd8:README) \
                <(git show 71ce415dc088f19a0b8d6c8567dfdd6d851842b2:README)
24,26c24,25
< compatible with the GPLv2).
< It was originally written by Linus Torvalds with help of a group of
< hackers around the net. It is currently maintained by Junio C Hamano.
---
> compatible with the GPLv2). It was originally written by Linus
> Torvalds with help of a group of hackers around the net.
$ 

将其包装在一个小脚本中就足够容易了。

注意:后面的文件路径(上例中的 README)相对于存储库的根目录,而不是当前目录。您可以在名称前加上 ./使其相对于当前目录。 (后者可能不适用于某些旧版本的 git。)

关于git - git 中的 CVS 样式差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9263913/

相关文章:

svn - 如何同步svn和cvs?

cvs - 有没有办法从命令行获取简短的 CVS 状态?

git - 如何从分支中删除提交?

git - 在 Azure 中,如何在不同的服务器中克隆使用 git-lfs 存储库的存储库?

git - 为什么 git 的 cherry picking 不止一次提交会失败?

cvs - 如何跟踪 CVS 签到

svn - 支持链接/共享文件的源代码控制产品?

java - 如何在 Eclipse 中设置时区(错误的 cvs 日志时间戳)?

git - 撤消对 git config 中 receive.denyCurrentBranch 值的更改

java - 如何将公共(public)存储库 merge 到我自己的存储库中,但继续接收来自公共(public)存储库的更新?