職場や研究室と普段githubなど趣味で使ってるアカウントで分けたいときがあります。
例えば、職場で鳳凰院凶真
と名乗っていて、趣味ではokarin
というユーザ名で活動している場合などです。
鳳凰院凶真
としてコミットしたはずがokarin
としてコミットしていて焦るなんてことありますよね。
そんな時はgit hookを使って未然に防ぐことができます。
gitフック
gitフックによってコミットやプッシュなど特定のアクションの前にスクリプト実行することができます。
今回はコミットする前に特定のディレクトリにいれば、職場のアカウントでコミットするようにフックを設定してみます。
方法
~/.git-template/hooks/
に以下のpre-commit
スクリプトを配置して実行権限を与えます。
name
は変更後のユーザ名、work_dir
は職場用の作業ディレクトリをセットします。
pre-commit
#!/bin/bash
dir=$(cd $(dirname $0) && pwd)
name='鳳凰院凶真'
work_dir='ラボ'
# 社のディレクトリかつ社のユーザネームではない場合
if `echo ${dir} | grep -q ${work_dir}` && ! `git config user.name | grep -q -w ${name}`; then
`git config user.name ${name}`
echo 'changed user.name '${name}
echo 'retry git commit'
exit 1
fi
実行権限を与えるのを忘れずに。
$ chmod +x pre-commit
.gitconfig
にテンプレートを読むことを設定します。
$ git config --global init.templatedir '~/.git_template'
まとめ
上記の設定で、安心して職場でもコミットできるようになりました。
フックの機能を使えば他にも色々出来そうです。
また、shellscript初めて書いたのでおかしなところがあったらご指摘お願いします。