我正在使用过滤器在签出期间像这里描述的那样损坏文件。 现在的问题是,过滤器定义只存储在我的本地配置文件:

$ cat .git/config
....
[filter "dater"]
        smudge = /home/.../expand_date
        clean = perl -pe \"s/\\\\\\$Date[^\\\\\\$]*\\\\\\$/\\\\\\$Date\\\\\\$/\"

如果我的同事想从这个Date扩展中获益,他们需要复制我的筛选器定义。如果我改变了,我需要通知他们,等等。

所以我可以存储这个过滤器定义的部分。git/配置在存储库,让git使用它吗?


gitconfig文件支持3种作用域:——system、——global、——local。您还可以创建一个自定义配置文件,并将其包含在一个受支持的文件中。

为您的需求定制-是正确的选择。不要在.git/config中编写过滤器,你应该将它保存在存储库根目录下的.gitconfig文件中:

your-repo/
│
├── .git/
│   ├── config
│
├── .gitconfig
│

使用筛选器创建.gitconfig并提交更改。然后你的同事会一直更新它——但他们必须手动包含它。仅通过git自动包含您的自定义配置文件是不可能的,因为它会创建一个安全漏洞。

要将此配置应用于单个存储库,每个用户需要在your-repo/中运行以下命令:

git config --local include.path ../.gitconfig

参考:https://git-scm.com/docs/git-config # _includes

注意不要像user那样在自定义的.gitconfig中存储个人数据。*,将它们保存在全局的.gitconfig中。


默认情况下,你不能在git存储库中使用.gitconfig文件,但你可以链接到它,这样git配置就会有版本控制。

你可以像这样链接它:

[include]
  path = ../.gitconfig

我已经创建了一个简单的脚本gitconfig.sh,它为你做(比复制快得多)+简单的.gitconfig文件,所以如果你想要,看看这个repo https://github.com/HoBi/dotfiles。


编辑:我已经删除了该文件,但你可以在这里找到它https://github.com/tenhobi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh