将git config存储为存储库的一部分

时间:2013-08-20 07:48:27

标签: git

我在结帐时使用过滤器来破坏文件,如here所述。 现在的问题是过滤器定义只存储在我的本地配置文件中:

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

如果我的同事想要从这个Date扩展中受益,他们需要复制我的过滤器定义。如果我改变它,我需要通知他们等等。

那么我可以将.git/config的过滤器定义部分存储在存储库中并让git使用它吗?

2 个答案:

答案 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