Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git中的CVS样式差异_Git_Cvs - Fatal编程技术网

git中的CVS样式差异

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获

有没有办法使git Diff的输出格式像cvs样式的Diff一样?我发现git-diff的可读性较差。此外,出现在
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"