我在结帐时使用过滤器来破坏文件,如here所述。 现在的问题是过滤器定义只存储在我的本地配置文件中:
$ cat .git/config
....
[filter "dater"]
smudge = /home/.../expand_date
clean = perl -pe \"s/\\\\\\$Date[^\\\\\\$]*\\\\\\$/\\\\\\$Date\\\\\\$/\"
如果我的同事想要从这个Date
扩展中受益,他们需要复制我的过滤器定义。如果我改变它,我需要通知他们等等。
那么我可以将.git/config
的过滤器定义部分存储在存储库中并让git使用它吗?
答案 0 :(得分:123)
.gitconfig
文件有3个受支持的范围:--system, --global, --local
。您还可以创建自定义配置文件,并将其包含在其中一个受支持的文件中。
根据您的需要自定义 - 是正确的选择。不要在.git/config
中编写过滤器,而应将其保存在存储库根目录的.gitconfig
文件中:
your-repo/
│
├── .git/
│ ├── config
│
├── .gitconfig
│
使用您的过滤器创建.gitconfig
并提交更改。然后您的同事将始终保持更新 - 但他们必须手动包含它。 单独通过git无法自动包含您的自定义配置文件,因为它会产生安全漏洞。
要将此配置应用于单个存储库,每个用户都需要在your-repo/
中运行以下命令:
git config --local include.path ../.gitconfig
请注意不要将个人数据存储在自定义.gitconfig
中,例如user.*
,请将这些数据保存在全局.gitconfig
中。
答案 1 :(得分:13)
默认情况下,您无法在git存储库中使用.gitconfig
文件,但您可以链接到该文件,以便对git配置进行版本控制。
您可以像这样链接到它:
[include]
path = ../.gitconfig
我创建了一个简单的脚本 gitconfig.sh
,它为您完成(比复制快得多)+简单.gitconfig
文件,如果您愿意,请查看此内容回购https://github.com/HoBi/dotfiles。
编辑:我删除了该文件,但您可以在此处找到https://github.com/tenhobi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh