git smudge未应用于特定文件类型

时间:2018-03-15 00:42:44

标签: windows git

我已按照以下指南设置涂抹并清理以在本地使用标签并使用空格进行提交。我现在看到的问题是涂抹不适用于所有想要的文件类型。如果我签出.xml,.proto或.​​build文件,则应用过滤器并发生污迹,因此空格将更改为制表符。如果我尝试签出.cpp或.h文件,则不会应用过滤器,也不会出现污迹。

请注意,在设置过滤器之前,我已经在我的机器上安装了回购。解决方案是检查仓库中的每个文件。我已尝试使用各种命令并删除.git / index但这不起作用。问题似乎是涂抹不适用于某些文件类型,因为它部分工作。

有谁知道我可能缺少什么或问题是什么?我在Windows 10上使用此版本的expandpand。我可以通过重命名污迹" expandpand"来确认未应用过滤器。命令无效以触发错误消息。我确实看到了某些文件类型的错误消息,但没有看到其他文件类型。

$ unexpand --version
unexpand (GNU coreutils) 8.26
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by David MacKenzie.

在我的.gitconfig中,我已经指定了过滤器

[filter "tab2spaces"]
smudge = unexpand --tabs=4 --first-only
clean = expand --tabs=4 --initial

在我的.gitattributes中,我已经指定了应该应用的文件类型,包括.cpp和.h。

*.cpp               filter=tab2spaces
*.java              filter=tab2spaces
*.m                 filter=tab2spaces
*.mm                filter=tab2spaces
*.c                 filter=tab2spaces
*.cc                filter=tab2spaces
*.hpp               filter=tab2spaces
*.h                 filter=tab2spaces
*.xml               filter=tab2spaces
*.proto             filter=tab2spaces
*.build             filter=tab2spaces

这是我使用的安装文档 Can git automatically switch between spaces and tabs?

这是我试过的另一个解决方案 git: re-checkout files after creating smudge filter

1 个答案:

答案 0 :(得分:1)

如果重置索引不起作用,则解决方法是重新克隆存储库。

然后,在该新克隆中,您可以检查.gitattributes规则是否适用。

以下由OP评论:

  

在执行新克隆之前,请确保在所有相关分支中正确设置.gitattributes