我有一个包含.gitconfig
文件的macOS dotfiles存储库。我想将username
和email
与此文件分开,以便这些变量永远不会作为我的公共dotfiles存储库的一部分提交。
我看到的一种方法是指定一个名为.extra
的文件,将其保存在~/
目录中(在.bash_profile
中引用它)并在该文件中设置Git变量,以便它们在我的公共存储库外部,即我对.gitconfig
所做的任何公开更改不都包含username
和email
。
问题是设置这些值的方法都不适用于我。每次尝试后,我都会收到以下消息:
您的姓名和电子邮件地址是根据自动配置的 在您的用户名和主机名上。请检查它们是否准确。 您可以通过明确设置来禁止显示此消息:
git config --global user.name "Your Name"
git config --global user.email you@example.com
执行此操作后,您可以使用以下命令修复用于此提交的标识:
git commit --amend --reset-author
我的.extra
文件中有以下内容,但他无法正常工作:
GIT_AUTHOR_NAME="First Last"
GIT_COMMITTER_NAME="First Last"
EMAIL=email@example.com
我尝试过使用这些变量和其他变量的各种方法,以及包括和排除引号,甚至用export
为这些行添加前缀。有点亏!
答案 0 :(得分:7)
我找到了解决方案:
将以下内容添加到您的dotfiles'.gitconfig
文件中:
[user] # These values are set in ~/.gitconfig_local
[include] path = ~/.gitconfig_local
在名为~/
的{{1}}中创建一个文件,并在.gitconfig_local
文件中添加您不想提交或公开的值。在这种情况下:
.gitconfig
正如您可能猜到的那样,[user]
name = First Last
email = email@example.com
命令“链接”到存储库外部的本地辅助配置文件,因此是私有的。 [include]
中的其余设置(例如别名,颜色和编辑器设置等)仍将公开。
答案 1 :(得分:2)
可以基于每个存储库设置所有设置:只需从black
命令中删除--global
:
git config
然后,这些配置设置将存储在# from inside your repo :
git config user.name "Your Name"
git config user.email you@example.com
文件中(在repo文件夹中),并优先于全局配置选项。
这适用于任何git配置选项(别名,颜色,......)
note :您必须为您制作的任何新克隆或您要使用此身份的任何其他repo重复配置
答案 2 :(得分:0)
另一种可能性是对大多数配置使用$XDG_CONFIG_HOME/git/config
(通常为~/.config/git/config
)并将其包括在dotfiles存储库中。然后,您可以将.gitconfig
添加到.gitignore
并将其用于user.name
,user.email
和其他您不想提交的值。
有关读取文件的顺序,请参见git-config documentation。