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

我在结帐时使用filter来破解文件,就像这里所描述的那样。 现在的问题是,filter定义只存储在我的本地configuration文件中:

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

如果我的同事希望从此Date扩展中受益,则需要复制我的filter定义。 如果我改变它,我需要通知他们,等等。

那么我可以将.git/configfilter定义部分存储在仓库中,并让git使用它?

有3个支持.gitconfig文件的作用域:– .gitconfig --system, --global, --local 。 您也可以创build自定义configuration文件,并将其包含在其中一个受支持的文件中。

为了您的需要定制 – 是正确的select。 不要在.git/config中编写filter,而应将其保存在存储库根目录下的.gitconfig文件中:

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

使用您的filter创build.gitconfig并提交更改。 那么你的同事们会一直保持更新 – 但是他们必须手动包含它。 无法单独通过git 自动包含自定义configuration文件 ,因为这会造成安全漏洞。

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

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

注意不要将个人数据存储在自定义.gitconfig ,就像user.* ,保存在您的全局.gitconfig

默认情况下,你不能在git仓库中使用.gitconfig文件,但你可以链接到它,所以gitconfiguration将被版本化。

你可以像这样链接到它:

 [include] path = ../.gitconfig 

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


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