はじめに

Gitを使った開発では、同じコマンドを何度も繰り返し入力することが多くあります。git statusgit checkoutgit log --oneline --graphなど、長いコマンドを毎回タイプするのは非効率です。

本記事では、Gitエイリアス(alias)と.gitconfigのカスタマイズによって、日常のGit操作を効率化する方法を解説します。この記事を読み終えると、以下のことができるようになります。

  • Gitエイリアスの仕組みを理解し、設定できる
  • .gitconfigファイルを直接編集してカスタマイズできる
  • 便利なエイリアス例を自分の環境に導入できる
  • グローバル設定とプロジェクト単位の設定を使い分けられる
  • 作業効率を大幅に向上させるカスタマイズを適用できる

実行環境と前提条件

本記事の内容は、以下の環境で動作確認を行っています。

項目 要件
Git 2.40以上
OS Windows 10/11、macOS 12以上、Ubuntu 22.04以上
ターミナル コマンドプロンプト、PowerShell、Terminal.app、bash等
エディタ VS Code推奨

前提条件として、以下の知識があることを想定しています。

  • コマンドライン操作の基礎知識(cdls/dirmkdir等)
  • テキストエディタの基本操作

Gitエイリアスとは

Gitエイリアス(git alias)は、Gitコマンドのショートカットを定義する機能です。長いコマンドや頻繁に使用するコマンドに短い名前を付けることで、入力の手間を大幅に削減できます。

Gitエイリアスのメリット

Gitエイリアスを活用することで、以下のメリットが得られます。

メリット 説明
タイプ量の削減 長いコマンドを短い文字列で実行可能
ミスの防止 複雑なオプションを毎回入力する必要がない
生産性の向上 頻繁に使うコマンドを素早く実行できる
カスタムコマンドの作成 複数のコマンドを組み合わせた独自のコマンドを定義可能

Gitエイリアスの設定方法

Gitエイリアスを設定するには、git configコマンドを使用する方法と、.gitconfigファイルを直接編集する方法の2つがあります。

git configコマンドによるエイリアス設定

最も基本的な方法は、git configコマンドを使用してエイリアスを設定することです。

1
2
# 基本構文
git config --global alias.<エイリアス名> '<実行するコマンド>'

以下は、よく使われる基本的なエイリアスの設定例です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# statusを「st」で実行可能にする
git config --global alias.st status

# checkoutを「co」で実行可能にする
git config --global alias.co checkout

# branchを「br」で実行可能にする
git config --global alias.br branch

# commitを「ci」で実行可能にする
git config --global alias.ci commit

設定後、以下のように短縮コマンドで実行できます。

1
2
3
4
5
# 通常のコマンド
git status

# エイリアスを使用したコマンド
git st

期待される結果: 両方のコマンドで同じ出力が得られます。

.gitconfigファイルの直接編集

.gitconfigファイルを直接編集することで、複数のエイリアスを一度に設定できます。

1
2
# グローバル設定ファイルをエディタで開く
git config --global --edit

.gitconfigファイルに以下の形式でエイリアスを追記します。

1
2
3
4
5
[alias]
    st = status
    co = checkout
    br = branch
    ci = commit

.gitconfigファイルの場所

.gitconfigファイルは、設定のスコープによって異なる場所に保存されます。

スコープ 場所 優先度
システム $(prefix)/etc/gitconfig (Linux/macOS) または Git インストールディレクトリ (Windows)
グローバル ~/.gitconfig または $XDG_CONFIG_HOME/git/config
ローカル <リポジトリ>/.git/config

優先度が高い設定が、低い設定を上書きします。

便利なGitエイリアス例

ここでは、作業効率を大幅に向上させる実用的なGitエイリアスを紹介します。

git logの見やすい表示

コミット履歴をグラフ形式で見やすく表示するエイリアスです。

1
2
3
4
5
# ワンラインでグラフ表示
git config --global alias.lg "log --oneline --graph --all --decorate"

# 詳細なグラフ表示
git config --global alias.lga "log --graph --all --pretty=format:'%C(yellow)%h%C(reset) - %C(cyan)%an%C(reset) %C(green)(%ar)%C(reset) %s %C(red)%d%C(reset)'"

.gitconfigファイルでの記述:

1
2
3
[alias]
    lg = log --oneline --graph --all --decorate
    lga = log --graph --all --pretty=format:'%C(yellow)%h%C(reset) - %C(cyan)%an%C(reset) %C(green)(%ar)%C(reset) %s %C(red)%d%C(reset)'

実行例:

1
git lg

期待される結果:

* 3a4b5c6 (HEAD -> main) 最新のコミット
| * 1d2e3f4 (feature/new-feature) 機能追加
|/
* 9a8b7c6 初期コミット

git diffの単語単位表示

変更箇所を単語単位で色分け表示するエイリアスです。コードレビュー時に特に便利です。

1
2
3
4
5
6
7
8
# 単語単位のdiff
git config --global alias.dw "diff --word-diff"

# ステージングエリアとの単語単位のdiff
git config --global alias.dws "diff --staged --word-diff"

# カラー付きの単語単位diff
git config --global alias.dwc "diff --word-diff --color-words"

.gitconfigファイルでの記述:

1
2
3
4
[alias]
    dw = diff --word-diff
    dws = diff --staged --word-diff
    dwc = diff --word-diff --color-words

実行例:

1
git dw

期待される結果: 変更された単語が[-削除された-]{+追加された+}の形式で表示されます。

直前のコミットの修正

直前のコミットを素早く修正するためのエイリアスです。

1
2
3
4
5
# 直前のコミットにステージングされた変更を追加(メッセージはそのまま)
git config --global alias.amend "commit --amend --no-edit"

# 直前のコミットメッセージを修正
git config --global alias.reword "commit --amend"

.gitconfigファイルでの記述:

1
2
3
[alias]
    amend = commit --amend --no-edit
    reword = commit --amend

注意点: プッシュ済みのコミットを修正すると履歴が書き換わるため、チーム開発では慎重に使用してください。

ステージング操作の効率化

ファイルのステージング・アンステージングを効率化するエイリアスです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# すべての変更をステージング
git config --global alias.aa "add --all"

# 対話的なステージング
git config --global alias.ai "add --interactive"

# パッチモードでステージング
git config --global alias.ap "add --patch"

# ファイルをアンステージ
git config --global alias.unstage "restore --staged"

.gitconfigファイルでの記述:

1
2
3
4
5
[alias]
    aa = add --all
    ai = add --interactive
    ap = add --patch
    unstage = restore --staged

ブランチ操作の効率化

ブランチ関連の操作を効率化するエイリアスです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 新しいブランチを作成して切り替え
git config --global alias.cob "checkout -b"

# 新しいブランチを作成して切り替え(switch版)
git config --global alias.swc "switch -c"

# マージ済みブランチを一覧表示
git config --global alias.merged "branch --merged"

# マージ済みブランチを削除(mainを除く)
git config --global alias.cleanup "!git branch --merged | grep -v '\\*\\|main\\|master' | xargs -n 1 git branch -d"

.gitconfigファイルでの記述:

1
2
3
4
5
[alias]
    cob = checkout -b
    swc = switch -c
    merged = branch --merged
    cleanup = !git branch --merged | grep -v '\\*\\|main\\|master' | xargs -n 1 git branch -d

最後のコミット確認

直前のコミット内容を素早く確認するエイリアスです。

1
2
3
4
5
# 直前のコミットを表示
git config --global alias.last "log -1 HEAD --stat"

# 直前のコミットの差分を表示
git config --global alias.lastdiff "show HEAD"

.gitconfigファイルでの記述:

1
2
3
[alias]
    last = log -1 HEAD --stat
    lastdiff = show HEAD

便利な情報表示エイリアス

作業状況を素早く把握するためのエイリアスです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 短い形式でステータス表示
git config --global alias.s "status -sb"

# リモートの情報を表示
git config --global alias.remotes "remote -v"

# タグ一覧を日付順で表示
git config --global alias.tags "tag -l --sort=-creatordate"

# コミット数を表示
git config --global alias.count "rev-list --count HEAD"

.gitconfigファイルでの記述:

1
2
3
4
5
[alias]
    s = status -sb
    remotes = remote -v
    tags = tag -l --sort=-creatordate
    count = rev-list --count HEAD

外部コマンドを実行するエイリアス

エイリアス定義の先頭に!を付けることで、シェルコマンドを実行できます。これにより、Gitコマンド以外のツールと連携したり、複数のコマンドを組み合わせたりできます。

シェルコマンドを使用したエイリアス例

1
2
3
4
5
6
7
8
# 現在のブランチ名を表示
git config --global alias.current "!git rev-parse --abbrev-ref HEAD"

# プルしてからプッシュ
git config --global alias.sync "!git pull --rebase && git push"

# 変更をすべて破棄してmainブランチを最新化
git config --global alias.fresh "!git checkout main && git pull"

.gitconfigファイルでの記述:

1
2
3
4
[alias]
    current = !git rev-parse --abbrev-ref HEAD
    sync = !git pull --rebase && git push
    fresh = !git checkout main && git pull

複雑なスクリプトを関数として定義

シェル関数を使用して、引数を受け取る複雑なエイリアスを定義できます。

1
2
3
4
5
6
7
8
9
[alias]
    # 指定したコミット数だけ履歴を表示
    history = "!f() { git log --oneline -n ${1:-10}; }; f"
    
    # 新しいブランチを作成してリモートにプッシュ
    publish = "!f() { git push -u origin $(git rev-parse --abbrev-ref HEAD); }; f"
    
    # コミットメッセージを検索
    find = "!f() { git log --all --oneline --grep=\"$1\"; }; f"

実行例:

1
2
3
4
5
6
7
8
# 直近5件の履歴を表示
git history 5

# 現在のブランチをリモートにプッシュ
git publish

# 「fix」を含むコミットを検索
git find "fix"

グローバル設定とプロジェクト設定の使い分け

Gitの設定は、システム、グローバル、ローカルの3つのスコープで管理できます。適切に使い分けることで、環境に応じた柔軟な設定が可能になります。

設定スコープの違い

スコープ オプション 適用範囲 用途
システム --system すべてのユーザー 組織全体の標準設定
グローバル --global 現在のユーザー 個人の標準設定
ローカル --local(デフォルト) 現在のリポジトリ プロジェクト固有の設定

プロジェクト固有のエイリアス設定

特定のプロジェクトでのみ使用するエイリアスは、ローカル設定として定義します。

1
2
3
4
5
6
# プロジェクトディレクトリで実行
cd /path/to/project

# ローカル設定にエイリアスを追加
git config --local alias.deploy "!./scripts/deploy.sh"
git config --local alias.test "!npm test"

これらのエイリアスは、.git/configファイルに保存され、そのリポジトリ内でのみ有効になります。

条件付きインクルードによる設定の切り替え

Git 2.13以降では、ディレクトリごとに異なる設定ファイルを読み込む条件付きインクルード機能が使用できます。

~/.gitconfig:

1
2
3
4
5
6
7
[user]
    name = Your Name
    email = personal@example.com

# 仕事用ディレクトリの場合は別の設定を読み込む
[includeIf "gitdir:~/work/"]
    path = ~/.gitconfig-work

~/.gitconfig-work:

1
2
3
4
5
6
[user]
    email = work@company.com

[alias]
    # 会社プロジェクト用のエイリアス
    jira = "!f() { git commit -m \"$1: $2\"; }; f"

この設定により、~/work/ディレクトリ以下のリポジトリでは自動的に仕事用のメールアドレスとエイリアスが適用されます。

.gitconfigのその他のカスタマイズ

エイリアス以外にも、.gitconfigには作業効率を向上させる設定が多数あります。

カラー設定の最適化

出力のカラー表示を有効にして、情報を視覚的に識別しやすくします。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
[color]
    ui = auto
    diff = auto
    status = auto
    branch = auto

[color "diff"]
    meta = yellow bold
    frag = magenta bold
    old = red bold
    new = green bold

[color "status"]
    added = green
    changed = yellow
    untracked = red

デフォルトエディタの設定

コミットメッセージやインタラクティブリベース時に使用するエディタを設定します。

1
2
3
4
[core]
    editor = code --wait  # VS Codeを使用する場合
    # editor = vim        # Vimを使用する場合
    # editor = nano       # nanoを使用する場合

diffツールとmergeツールの設定

視覚的なdiff/mergeツールを設定して、コンフリクト解消を効率化します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[diff]
    tool = vscode

[difftool "vscode"]
    cmd = code --wait --diff $LOCAL $REMOTE

[merge]
    tool = vscode

[mergetool "vscode"]
    cmd = code --wait $MERGED

プッシュ・プルの挙動設定

デフォルトのプッシュ・プル動作をカスタマイズします。

1
2
3
4
5
6
[push]
    default = current    # 現在のブランチを同名のリモートブランチにプッシュ
    autoSetupRemote = true  # 新しいブランチの追跡設定を自動化

[pull]
    rebase = true        # プル時にマージではなくリベースを使用

便利なその他の設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[core]
    autocrlf = input     # 改行コードの自動変換(macOS/Linux)
    # autocrlf = true    # 改行コードの自動変換(Windows)
    ignorecase = false   # ファイル名の大文字小文字を区別

[init]
    defaultBranch = main # 新規リポジトリのデフォルトブランチ名

[fetch]
    prune = true         # fetch時に削除されたリモートブランチを自動的にローカルから削除

[rerere]
    enabled = true       # コンフリクト解消パターンを記憶して再利用

設定の確認と管理

現在の設定を確認する

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# すべての設定を表示
git config --list

# 設定の出所(どのファイルで設定されているか)も表示
git config --list --show-origin

# 特定の設定値を確認
git config --get alias.lg

# エイリアスのみを一覧表示
git config --get-regexp alias

期待される結果(エイリアス一覧):

alias.st status
alias.co checkout
alias.br branch
alias.ci commit
alias.lg log --oneline --graph --all --decorate

設定の削除

不要になったエイリアスや設定を削除する方法です。

1
2
3
4
5
# 特定のエイリアスを削除
git config --global --unset alias.lg

# セクション全体を削除(すべてのエイリアスを削除)
git config --global --remove-section alias

おすすめのエイリアス設定まとめ

本記事で紹介したエイリアスをまとめた.gitconfigの設定例です。以下の内容を~/.gitconfig[alias]セクションに追加することで、すぐに使い始められます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[alias]
    # 基本コマンドの短縮
    st = status
    s = status -sb
    co = checkout
    br = branch
    ci = commit
    
    # ステージング操作
    aa = add --all
    ap = add --patch
    unstage = restore --staged
    
    # ブランチ操作
    cob = checkout -b
    swc = switch -c
    merged = branch --merged
    current = !git rev-parse --abbrev-ref HEAD
    publish = "!f() { git push -u origin $(git rev-parse --abbrev-ref HEAD); }; f"
    
    # コミット操作
    amend = commit --amend --no-edit
    reword = commit --amend
    last = log -1 HEAD --stat
    lastdiff = show HEAD
    
    # ログ表示
    lg = log --oneline --graph --all --decorate
    lga = log --graph --all --pretty=format:'%C(yellow)%h%C(reset) - %C(cyan)%an%C(reset) %C(green)(%ar)%C(reset) %s %C(red)%d%C(reset)'
    history = "!f() { git log --oneline -n ${1:-10}; }; f"
    
    # diff表示
    dw = diff --word-diff
    dws = diff --staged --word-diff
    dwc = diff --word-diff --color-words
    
    # 便利な操作
    sync = !git pull --rebase && git push
    fresh = !git checkout main && git pull
    find = "!f() { git log --all --oneline --grep=\"$1\"; }; f"
    
    # 情報表示
    remotes = remote -v
    tags = tag -l --sort=-creatordate
    count = rev-list --count HEAD

まとめ

本記事では、Gitエイリアスと.gitconfigのカスタマイズについて解説しました。

  • Gitエイリアスは、長いコマンドを短縮し、作業効率を大幅に向上させます
  • git configコマンドまたは**.gitconfigファイル**の直接編集でエイリアスを設定できます
  • git log --graphgit diff --word-diffなどの便利なオプションをエイリアス化すると効果的です
  • グローバル設定とローカル設定を使い分けることで、環境に応じた柔軟な運用が可能です
  • 条件付きインクルードを使えば、ディレクトリごとに異なる設定を自動適用できます

まずは基本的なエイリアス(stcobrci)から始めて、徐々に自分の作業スタイルに合ったカスタマイズを追加していくことをおすすめします。

参考リンク