想定ユーザー
- 仕事用のコミットとプライベートなコミットはuser.nameとuser.emailを分けたい
- 個人のgitリポジトリでuser.nameとuser.emailを設定するの忘れて会社の設定でコミットしてしまった
上に当てはまる人は幸せになれるかも?
設定方法
- よく使う方を--globalで設定しておく(今回は仕事用)
git config --global user.name "Taro Qiita"
git config --global user.email taro@qiita.com
- プライベートなgitリポジトリの置き場を作る
mkdir ~/private
-
init.templatedir
を--globalで設定する(pre-commitフックを全てのリポジトリに適応するため)
git config --global init.templatedir '~/.git_template'
-
~/.git_template/hooks
ディレクトリにpre-commitフックを作る
~/.git_template/hooks/pre-commit
#!/bin/sh
# ここにプライベートで利用するnameとemailを設定
PRIVATE_NAME="qii-taro"
PRIVATE_EMAIL="qii-taro@gmail.com"
# 上で作ったプライベートな置き場の絶対パス
PRIVATE_DIR="/Users/taro/private"
if [ $(pwd | fgrep "$PRIVATE_DIR") ]; then
if [ "$(git config user.name)" != "$PRIVATE_NAME" -o "$(git config user.email)" != "$PRIVATE_EMAIL" ]; then
echo "Git init in private directory. Change user.name and user.email."
git config user.name "$PRIVATE_NAME"
git config user.email "$PRIVATE_EMAIL"
fi
fi
exit 0
- 最後にpre-commitファイルに実行権限を付与する
chmod +x ~/.git_template/hooks/pre-commit
- 完了!
使い方
~/private
以下に個人用リポジトリを置く。
このなかでgit init
したりgit clone
したリポジトリは、コミット前に勝手にuser.name
とuser.email
が書き換わるようになっている。
すでにあるリポジトリを~/private
以下に移動させた場合、再度git init
すればOK。