我的本地计算机上有一些git存储库是业余爱好项目(托管在GitHub上),还有一些与工作相关(在其他地方托管)。因为我做错了(不要问,这是无关紧要的)我经常要rm -rf
并重新克隆一个repo,它也会清除它的.git/config
文件。
我想在我的~/.gitconfig
中添加一些内容,这些内容会为我的工作项目设置user.email
,而不是我的业余爱好项目。 (请记住,我不能使用.git/config
,因为它会定期消失。)这可以基于项目名称,或者基于我正在克隆的远程仓库的URL。
作为一个单独但相关的问题,我希望能够指定应用于所有我的存储库的全局预提交挂钩,而不是必须记住修改.git/hooks/pre-commit
每次我克隆一个回购。 (我知道git clone --template
。)
我想我可以写一个别名为git
的Bash脚本,只要它注意到我做了git clone
就可以完成所有这些设置。那是唯一的答案吗?
答案 0 :(得分:0)
如果您使用任何更改目录时更改提示的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
}
这显然非常粗糙(我也没有测试过),但应该给你一个很好的起点。
答案 1 :(得分:0)
不知道为什么你会/有/重新离开..
git reset --hard && git clean -xdf
足够好,会给你一个干净的工作目录。这将保留您的配置更改。
如果您的引用很乱,可以使用
清理远程分支git remote prune
换句话说,我/我/问你为什么“做错了”:)
答案 2 :(得分:0)
如果是我,我可能会使用脚本将原始rm -rf
调用包装起来,将要保存的内容复制到某个临时位置,删除所有内容,克隆存储库,然后将内容复制回来