[英]How to set git:username automatically based on URL of remote repo
我在本地计算机上有一些git存储库,它们是爱好项目(托管在GitHub上),有些与工作相关(托管在其他地方)。 因为我做错了 (不要问,这是无关紧要的),所以我必须定期rm -rf
并重新克隆一个repo,这也会清除它的.git/config
文件。
我想在我的~/.gitconfig
中放置一些~/.gitconfig
,以便为我的工作项目和业余项目设置不同的user.email
。 (请记住,我不能使用.git/config
因为它会定期消失。)这可能基于项目名称,也可能基于我正在克隆的远程仓库的URL。
作为一个单独但相关的问题,我希望能够指定一个适用于我所有存储库的全局pre-commit钩子,而不是每次复制克隆仓库时都记得要修改.git/hooks/pre-commit
。 (我知道git clone --template
。)
我想我可以写一个别名为git
的Bash脚本,只要它注意到我正在执行git clone
,就可以完成所有此设置。 那是唯一的答案吗?
如果您使用任何Bash扩展名来更改目录时提示,那么您可能希望根据所使用的存储库,将其插入以设置GIT_AUTHOR_NAME
, GIT_COMMITTER_NAME
和关联的电子邮件环境变量。
在.bashrc中,您可以执行以下操作:
__git_ps1() {
BRANCH=`git branch 2>/dev/null`
if [ "$?" == "0" ]; then
# Do something with your prompt
if [[ `git remote -v` =~ $WORK_URL_REGEX ]]; then
export GIT_AUTHOR_EMAIL="me.working@work.com"
else
export GIT_AUTHOR_EMAIL="me.playing@home.org"
fi
endif
}
这显然很粗糙(我也没有测试),但是应该为您提供一个良好的起点。
不知道为什么你会/不得不/重新克隆..
git reset --hard && git clean -xdf
足够好,它将为您提供一个干净的工作目录。 这将保留您的配置更改。
如果您对参考资料感到困惑,可以使用以下方法清理远程分支
git remote prune
换句话说,我/ am /询问您为什么“做错了” :)
如果是我,我可能会用脚本包装原始的rm -rf
调用,该脚本将要保存的内容复制到某个临时位置,删除所有内容,克隆存储库,然后将内容复制回。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.