応用

git config

ユーザー名・メールアドレスなどの Git の動作設定を行います。個人設定からプロジェクト固有の設定、コマンドの alias 登録まで幅広く使います。

構文 git config [--global|--local|--system] <key> [value]

オプション

フラグ 説明
--global ユーザー単位(PC内のすべてのリポジトリ共通)で設定します。~/.gitconfig に保存されます。
--local 現在のリポジトリだけに適用される設定をします(デフォルト)。.git/config に保存されます。
--system PC上のすべてのユーザー・すべてのリポジトリに適用される設定をします。管理者権限が必要な場合があります。
--list 現在有効な設定の一覧を表示します。
--unset 指定したキーの設定を削除します。
--edit 設定ファイルをエディタで直接開いて編集します。

git config は、Git の動作をユーザー単位・リポジトリ単位で設定するコマンドです。最初のセットアップで使う user.name / user.email から、日常操作を効率化する alias まで、幅広い用途に使われます。

設定の3つのスコープ

Git の設定は3つのレベルに分かれており、より狭い範囲の設定が優先されます。

スコープ保存先適用範囲
--system/etc/gitconfigPC上の全ユーザー・全リポジトリ
--global~/.gitconfig実行ユーザーの全リポジトリ
--local(デフォルト).git/config現在のリポジトリのみ

優先順位は --local > --global > --system です。プロジェクト固有の設定をしたい場合は --local、普段使いの個人設定は --global を使います。

user.name / user.email の初期設定

Git を初めて使う際に必須の設定です。

# グローバル設定(PC全体のデフォルト)
git config --global user.name "Taro Yamada"
git config --global user.email "[email protected]"

会社用と個人用でメールアドレスを分けたい場合は、特定のリポジトリだけ --local で上書きします。

# このリポジトリだけ別のメールアドレスを使う
cd ~/work/company-project
git config --local user.email "[email protected]"

デフォルトエディタを設定する

コミットメッセージ編集やインタラクティブリベースで開かれるエディタを指定できます。

# VSCode をエディタとして使う
git config --global core.editor "code --wait"

# Vim を使う
git config --global core.editor "vim"

alias で日常操作を効率化する

よく使うコマンドを短い名前に登録できます。

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.last "log -1 HEAD"

設定後は短縮形でコマンドを実行できます。

git st    # git status と同じ
git co main   # git checkout main と同じ

設定を確認する

# 現在有効なすべての設定を一覧表示
git config --list

# 設定がどのファイルから読み込まれているかも表示
git config --list --show-origin

# 特定のキーだけ確認
git config user.email

設定を削除・編集する

# 特定の設定を削除
git config --global --unset alias.st

# 設定ファイルを直接エディタで開く
git config --global --edit

ヒント

  • git config --local で設定したプロジェクト固有の設定は、--global の設定を一時的に上書きします。削除すれば --global の設定に戻ります。
  • alias には Git 以外のシェルコマンドも登録できます。先頭に ! を付けると外部コマンドとして実行されます(例: git config --global alias.graph "!git log --oneline --graph --all")。