Gitを使っていると設定を変更することがあります。例えば、ユーザー名やメールアドレスの登録やリモートリポジトリの登録などがあります。Gitを使いはじめた頃は、作業スペースを変えると毎回リモートリポジトリを設定しなおすべきなのか理解していませんでした。gitconfigについてまず知っておきたいことをまとめました。
Gitの設定ファイル
設定ファイルの種類
Gitの設定にはシステム設定とグローバル設定とローカル設定があります。システム設定はgitconfigファイル、それ以外は.gitconfigファイルとして存在しています。なお、システム設定については基本的に触ることはないのでここでは説明を省略します。(そういうものがあるんだなっていう認識で大丈夫です)
グローバル設定
Gitを操作する上で全ての作業スペースで共通の設定項目です。ルートディレクトリに.gitconfigファイルとして存在しています。
git config --globalコマンドでルートディレクトリの.gitconfigファイルに設定内容を登録できます。
下記のコマンドはGitで最初に設定するのはGitHubなどのユーザーネームとメールアドレスを登録するコマンドです。
$ git config --global user.name 'ユーザー名'
$ git config --global user.email 'メールアドレス'
git config --globalコマンドで登録した設定内容は、ルートディレクトリ内すべてに適用されます。そのため、作業スペースを変更してもいちいちユーザーネームやメールアドレスを登録する必要はありません。
ローカル設定
各作業スペースでの設定項目です。.gitconfigファイルはgit initで作成された.gitフォルダの中に保存されています。--globalのオプションをつけずにgit configをするとローカルの.gitconfigに保存されます。他にもgit remote addコマンドでリモートリポジトリを登録した場合もローカルの.gitconfigファイルに保存されます。
$ git remote add origin リモートリポジトリのURL
ローカル設定は互いに独立しています。例えば、下図のように作業スペースAで設定したローカル設定は作業スペースCには反映されません。そのおかげで他の作業スペースへ移動してもリモートリポジトリを登録しなおす必要はありません。
Gitの設定の優先順位
設定ファイルの優先順位は
ローカル>グローバル>システム
となっています。ローカルで設定した項目が優先され、それ以外はグローバル設定のものが適用されます。(さらにグローバルで設定されていない項目はシステム設定が適用されます)
ある作業スペースだけに適用したいものをローカル設定に、共通して使いたいものをグローバル設定にすれば良いということになります。逆に、グローバル設定したつもりなのに設定が反映されていない場合は、--globalのオプションをつけ忘れてどこかのローカル設定にされている可能性が高いです。このことを理解しておけばGitの設定で悩むことは少なくなると思います。
オススメのグローバル設定:alias(エイリアス)
最後にGitの操作効率を上げるalias(エイリアス)の設定を紹介します。Gitでよく使うコマンドにエイリアスを設定するとコマンド入力を削減することができます。
下記のコマンドをそれぞれ実行するとエイリアスを設定できます。(--globalオプションを忘れずに!)
$ git config --global alias.ci commit
$ git config --global alias.st status
$ git config --global alias.br branch
$ git config --global alias.co checkout
このように設定しておくと、それぞれのコマンドをalias.⚪︎⚪︎の「〇〇」の文字だけで実行できます。例えば、下記のようにコマンドを短縮して実行できます。
$ git ci -m "first commit"
$ git st
$ git br -d feature
$ git co -b feature
ぜひ試してみてください。