假设我创建了一个新的存储库,并尝试提交。 Git 向我展示了
*** Please tell me who you are.
Run
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
在没有阅读最后一行的情况下,我运行了 git (使用 )建议的两行--global
并愉快地提交。
一周后,我为一个完全不相关的项目创建了一个新的存储库,我需要在不同的user.email
.我什至不假思索地user.email
尝试承诺,它会经历并推动到原点。
上述情况在我身上发生过两次,让我思考是否有办法禁止git config --global
。
例如,如果我运行
git config --global user.email "[email protected]"
我希望 bash 不要运行命令并向我显示警告,但是当我运行时
git config user.email "[email protected]"
我希望它能够通过。
是否可以?
答案1
最简单的是为这种情况创建一个函数(对于 Bash):
git() {
for arg in "$@"; do
if [[ $arg == --global ]]; then
echo "Don't use '--global'!"
return 1
fi
done
command git "$@"
}
请注意,这不会检查是否--global
存在实际上git
一个选项,而不是例如另一个选项的选项参数,如果从 shell 之外的其他地方运行,则至少没有关系。另外,如果你创建一个 git 别名来 include --global
,它不会被这个捕获,等等。显然你也可以通过运行command git
or来规避保护/usr/bin/git
,或者只是取消定义该函数。