Git Diff缩进/美化打印/差异化前优化

10
有没有一种方法可以让 Git 在比较两个 C++ 源代码文件之前进行 缩进/美化/格式化呢?
我不想让 Git 显示出在某人自动格式化代码后引入的无数更改。
示例用法:我执行git difftool --indent-before-diffing path/to/file,并获取在对 path/to/file 的原始版本和修改后的版本进行缩进后的更改。
1个回答

13

如果你能找到一个可以帮你自动缩进的应用程序,你可以使用这里描述的方法来处理odt文件:

在你的 .gitattributes 文件中添加以下代码行:

*.odt diff=odt

现在在 .git/config 中设置 odt diff 过滤器:

[diff "odt"]
    binary = true
    textconv = /usr/local/bin/odt-to-txt
所以对于C++文件,它大概会是这样的:
*.cpp diff=cpp

而在 .git/config 文件中:

[diff "cpp"]
    textconv = /path/to/indenter

正如评论中指出的那样,可以使用GNU Indent进行缩进。


1
这是一个非常好的答案!谢谢!它仍然有一个小缺点,就是我不能轻松地(即通过命令行开关)关闭该功能。除非有人提出类似的解决方案可以直接在“git diff”命令中启用/禁用,否则我将在几天内将其标记为正确答案。 - Hinton
1
这样的“应用程序”将是GNU indent,如果有人以前没有听说过它的话... - Hinton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接