0

我的本地机器上有一些 git 存储库,它们是业余项目(托管在 GitHub 上),还有一些与工作相关(托管在其他地方)。因为我做错了(不要问,这无关紧要),我必须定期rm -rf重新克隆一个 repo,这也会清除它的.git/config文件。

我想在我的工作项目中加入一些与我的爱好项目不同的~/.gitconfig东西。user.email(请记住,我不能使用.git/config,因为它会定期被清除。)这可能基于项目名称,或者基于我正在克隆的远程仓库的 URL。

作为一个单独但相关的问题,我希望能够指定一个应用于我所有.git/hooks/pre-commit存储库的全局预提交挂钩,而不是每次克隆存储库时都必须记住进行修改。(我知道git clone --template。)

我想我可以编写一个别名为的 Bash 脚本git,只要它注意到我在执行git clone. 那是唯一的答案吗?

4

3 回答 3

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
}

这显然很粗糙(我也没有测试过),但应该给你一个很好的起点。

于 2012-05-30T19:13:48.553 回答
0

不知道你为什么/必须/重新克隆..

git reset --hard && git clean -xdf

足够好,会给你一个干净的工作目录。这将保留您的配置更改。

如果您的参考资料一团糟,您可以清理远程分支

git remote prune

换句话说,我/我/问你为什么“做错了”:)

于 2012-05-30T19:25:38.753 回答
0

如果是我,我可能会rm -rf用一个脚本来包装原始调用,该脚本将我要保存的内容复制到某个临时位置,删除所有内容,克隆 repo,然后将内容复制回。

于 2012-05-30T21:18:39.270 回答