繁体   English   中英

如何根据远程仓库的URL自动设置git:username

[英]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_NAMEGIT_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM