让 git smudge 过滤器在 Ubuntu 中工作

Phi*_*wig 5 git

我正在尝试让 git smudge 过滤器在 ubuntu 中工作,如此 stackoverflow 答案中所述:https : //stackoverflow.com/questions/2316677/can-git-automatically-switch-between-spaces-and-tabs

目标是在结帐时将空格转换为制表符。

在我的 .gitconfig 我有这个条目:

[filter "tabspace"]
    smudge = unexpand --tabs=4 --first-only
    clean = expand --tabs=4 --initial
Run Code Online (Sandbox Code Playgroud)

例如,考虑使用空格作为缩进的 lxqt-panel 存储库:https : //github.com/lxde/lxqt-panel

在 中lxqt-panel/.git/info/attributes,我启用了选项卡空间过滤器:

*.cpp   filter=tabspace
*.h     filter=tabspace
Run Code Online (Sandbox Code Playgroud)

根据 Stackoverflow Answer 的各种在线资源,运行git checkout HEAD -- **现在应该将所有空格转换为制表符。但是,就我而言,git 似乎完全忽略了这些设置;运行unexpand手工作品虽然。

我在这里缺少什么?

我在 Ubuntu 16.04 上使用 git 2.11.0。

jan*_*nos 2

git checkout HEAD -- **只会转换有更改的文件。未更改的文件不会被触及,这就是为什么其中没有任何内容被替换的原因。要强制更新所有文件,您可以删除它们然后重置。但请确保您没有任何未提交的更改,因为它们将会丢失。例如你可以这样做:

git rm -r .
git reset --hard
Run Code Online (Sandbox Code Playgroud)

或者,如果您愿意,您可以仅将所有.h.cpp文件替换为:

rm **/*.{h,cpp}
git checkout .
Run Code Online (Sandbox Code Playgroud)