git中的CVS样式差异
有没有办法使git Diff的输出格式像cvs样式的Diff一样?我发现git-diff的可读性较差。此外,出现在git中的CVS样式差异,git,cvs,Git,Cvs,有没有办法使git Diff的输出格式像cvs样式的Diff一样?我发现git-diff的可读性较差。此外,出现在more中的git差异也很烦人-如何禁用此功能?您可以通过将core.pager设置为空字符串来禁用寻呼机: git config --global core.pager '' 默认情况下,git diff使用“通用”格式,diff-ucvs diff使用较旧的标准diff格式(删除了标有的行,每个差异周围没有上下文) 例如,您可以使用git diff-c或git diff-C5获
more
中的git差异也很烦人-如何禁用此功能?您可以通过将core.pager
设置为空字符串来禁用寻呼机:
git config --global core.pager ''
默认情况下,
git diff
使用“通用”格式,diff-u
cvs diff
使用较旧的标准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工具。我自己的工具可以从git(或从RCS或CVS)提取文件的多个版本
这是另一个解决方案,虽然有点复杂。例如,我已经为git
本身克隆了git回购协议。如果我想比较顶级自述文件的两个连续版本,我可以这样做:
$ 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.
$
$diff——在网络上一群黑客的帮助下,正常的Torvalds。
$
用一个小脚本来包装它是很容易的
请注意,:
(自述文件
,在上面的示例中)后面的文件路径是相对于存储库的根目录的,而不是相对于当前目录的。您可以在名称前面加上/
,使其相对于当前目录。(后者可能不适用于某些较旧版本的git。)尝试使用标准的差异格式:
git difftool -y -x "diff --unchanged-group-format='' --old-line-format='< %L' --new-line-format='> %L'"
更多信息
也看到
git difftool -y -x "diff -n"
但我怀疑这是你想要的。如果这确实对您有效,要使它在每次使用git diff时都有效,请参阅,在接受的答案中引用了哪些内容。我认为通常的做法是将其设置为cat
。将其设置为cat似乎更整洁。@user1207217您需要一些声誉才能投票(自从上一次SO布局更改后,我再也找不到解释该网站声誉的链接),但我可以接受答案。我不知道这与git的哪个版本有关,但对于“git version 1.7.7.6”,git diff-c无效,但git diff-Un(n表示上下文行数)工作。git diff-U0几乎给了我我想要的,但我还是不喜欢它的外观。这是一个偏好的问题,虽然你喜欢上下文差异,但我不喜欢,因为它只是在提交之前对我进行一次理智检查。如果我需要上下文差异,我正在使用meld。不过,为提示干杯。如果允许,我会再次标记看,这里我们可以传递--normal选项。Cheers@user1207217:我更新了我的答案(就在我阅读上述评论中的链接之前)。这与我想要的结合在一起。干杯这真的应该是两个独立的问题。
git difftool -y -x "diff -n"