将git config存储为存储库的一部分
我在结帐时使用filter来破解文件,就像这里所描述的那样。 现在的问题是,filter定义只存储在我的本地configuration文件中:
$ cat .git/config .... [filter "dater"] smudge = /home/.../expand_date clean = perl -pe \"s/\\\\\\$Date[^\\\\\\$]*\\\\\\$/\\\\\\$Date\\\\\\$/\"
如果我的同事希望从此Date
扩展中受益,则需要复制我的filter定义。 如果我改变它,我需要通知他们,等等。
那么我可以将.git/config
filter定义部分存储在仓库中,并让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