はじめに#
Gitを使った開発では、同じコマンドを何度も繰り返し入力することが多くあります。git status、git checkout、git 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推奨 |
前提条件として、以下の知識があることを想定しています。
- コマンドライン操作の基礎知識(
cd、ls/dir、mkdir等)
- テキストエディタの基本操作
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)'
|
実行例:
期待される結果:
* 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
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 --graphやgit diff --word-diffなどの便利なオプションをエイリアス化すると効果的です
- グローバル設定とローカル設定を使い分けることで、環境に応じた柔軟な運用が可能です
- 条件付きインクルードを使えば、ディレクトリごとに異なる設定を自動適用できます
まずは基本的なエイリアス(st、co、br、ci)から始めて、徐々に自分の作業スタイルに合ったカスタマイズを追加していくことをおすすめします。
参考リンク#