有没有办法让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/