有没有办法让git的输出格式不同于cvs风格?我发现git的不同之处可读性较差。此外,more
中出现的git差异也很烦人--我该如何禁用它呢?
发布于 2013-01-15 07:41:50
尝试使用标准比较格式:
git difftool -y -x "diff --unchanged-group-format='' --old-line-format='< %L' --new-line-format='> %L'"
这给出了类似CVS的新行和老行,没有上下文,但它不会在不同行的组之间插入额外的内容。我不太确定如何实现剩下的部分,因为我不知道您会在多大程度上喜欢类似CVS的格式。
man diff
了解更多信息
另请参阅
git difftool -y -x "diff -n"
但我怀疑这不是你想要的。如果这对你有效,为了让它每次都能用git diff工作,请参阅Configuring diff tool with .gitconfig?,它在接受的答案中引用了http://jeetworks.com/node/90。
发布于 2012-02-14 04:20:56
默认情况下,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
不能完成您想要的操作,您可以提取文件修订版的副本,并对其使用您喜欢的任何比较工具。我自己的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
)后面的文件路径是相对于存储库的根目录的,而不是相对于当前目录的。您可以在名称前面加上./
to make,以使其相对于当前目录。(后者可能不适用于某些旧版本的git。)
发布于 2012-02-14 00:23:31
您可以通过将core.pager
设置为空字符串来禁用寻呼机:
git config --global core.pager ''
https://stackoverflow.com/questions/9263913
复制相似问题