在使用 GitHub 的时候,经常在公司帐户跟个人帐户之间切换,难免会造成这样的困扰:个人项目中的代码不小心用公司帐户提交了。
等到发现的时候,才发现已经来不及修改了——代码已经被推送到了远程仓库,强行修改历史会带来很多冲突。
经过一番寻找,发现了这个答案,原来 Git 2.13 引入了一项新功能“Conditional Includes”,可以实现对不同路径下的仓库引用不同 gitconfig 的功能。
我习惯把公司项目放在 ~/projects/company
目录下,个人项目随缘摆放。所以我给 ~/.gitconfig
添加了如下配置:
[includeIf "gitdir:company/**"]
path = ~/.gitconfig.company
gitdir:
表示按照.git
文件夹的路径来匹配 gitconfigcompany/**
是一个 glob 表达式,在includeIf
中会自动展开为**/company/**/.git
,用来匹配/any/path/to/company/any/project/.git
。path
则是指要引用的 gitconfig 的路径,被引用的文件内容会覆盖~/.gitconfig
的配置,从而拥有更高的优先级。
接着,只需要在 ~/.gitconfig.company
添加公司帐户的相关信息就好了:
[user]
name = your-name
email = your-email
掌握了这个小技巧,再也不会用错误的帐户提交正确的代码了。
发表回复