Oh My ZshでGit操作を爆速化!便利なエイリアス200個を使いこなす
はじめに
Gitコマンドを毎回フルで打つのは面倒ですよね。git statusをgst、git pull origin 現在のブランチをggpullのように短縮できたら、作業効率が大幅に向上します。
本記事では、Oh My Zshのgitプラグインを導入して、200以上の便利なGitエイリアスを使えるようにする方法を紹介します。
前提条件
- Zshがインストールされており、
~/.zshrcファイルが存在すること - インターネット接続があること
Oh My Zshのインストール
まず、Oh My Zshをインストールします。以下のコマンドを実行してください。
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
もしくは、wgetを使う場合:
sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
インストールが完了すると、自動的に~/.zshrcが上書きされ、Oh My Zshの設定が適用されます。
Gitプラグインの有効化
Oh My Zshには最初からgitプラグインが含まれていますが、明示的に有効化する必要があります。
1. .zshrcを編集
エディタで~/.zshrcを開きます:
vim ~/.zshrc
# または
nano ~/.zshrc
2. pluginsセクションを探す
以下のような行を探してください:
plugins=(git)
デフォルトではgitプラグインが既に含まれている場合がありますが、含まれていない場合は追加してください。
複数のプラグインを使用する場合は、スペース区切りで記述します:
plugins=(git docker kubectl)
3. 設定を反映
.zshrcを保存したら、以下のコマンドで設定を反映します:
source ~/.zshrc
動作確認
エイリアスが正しく設定されているか確認しましょう。
# エイリアス一覧を表示
alias | grep git
# 特定のエイリアスを確認
alias gst
# 出力: gst='git status'
実際に使ってみます:
# 従来の方法
git status
# エイリアスを使った方法
gst
主要なエイリアス一覧
Oh My Zshのgitプラグインには200以上のエイリアスが定義されています。ここでは、特に頻繁に使用するものをカテゴリ別に紹介します。
基本操作
| エイリアス | コマンド | 用途 |
|---|---|---|
| g | git | Git コマンドの短縮形 |
| gst | git status | ステータス確認 |
| gss | git status --short | ステータスの短縮表示 |
| gsb | git status --short --branch | ブランチ付き短縮ステータス |
Add(追加)
| エイリアス | コマンド | 用途 |
|---|---|---|
| ga | git add | ファイルをステージング |
| gaa | git add --all | 全ファイルをステージング |
| gapa | git add --patch | 対話的にステージング |
| gau | git add --update | 追跡中のファイルのみ追加 |
| gav | git add --verbose | 詳細表示でステージング |
| gap | git apply | パッチ適用 |
| gapt | git apply --3way | 3-wayマージでパッチ適用 |
Commit(コミット)
| エイリアス | コマンド | 用途 |
|---|---|---|
| gc | git commit --verbose | 詳細表示でコミット |
| gca | git commit --verbose --all | 全変更を詳細表示でコミット |
| gcmsg | git commit --message | メッセージ付きコミット |
| gcam | git commit --all --message | 全変更をメッセージ付きでコミット |
| gc! | git commit --verbose --amend | 直前のコミットを修正 |
| gca! | git commit --verbose --all --amend | 全変更で直前のコミットを修正 |
| gcn! | git commit --verbose --no-edit --amend | 編集なしでコミット修正 |
| gcan! | git commit --verbose --all --no-edit --amend | 全変更を編集なしで修正 |
| gcans! | git commit --verbose --all --signoff --no-edit --amend | サインオフ付きで修正 |
| gcann! | git commit --verbose --all --date=now --no-edit --amend | 現在日時で修正 |
| gcs | git commit --gpg-sign | GPG署名付きコミット |
| gcss | git commit --gpg-sign --signoff | GPG署名とサインオフ付き |
| gcssm | git commit --gpg-sign --signoff --message | GPG署名、サインオフ、メッセージ付き |
| gcsm | git commit --signoff --message | サインオフとメッセージ付き |
| gcas | git commit --all --signoff | 全変更をサインオフ付きでコミット |
| gcasm | git commit --all --signoff --message | 全変更をサインオフとメッセージ付き |
| gcfu | git commit --fixup | fixupコミット |
| gwip | (複雑なコマンド) | WIP(作業中)コミット作成 |
| gunwip | (複雑なコマンド) | 直前のWIPコミットを取り消し |
Branch(ブランチ)
| エイリアス | コマンド | 用途 |
|---|---|---|
| gb | git branch | ブランチ一覧 |
| gba | git branch --all | 全ブランチ一覧 |
| gbd | git branch --delete | ブランチ削除 |
| gbD | git branch --delete --force | ブランチ強制削除 |
| gbm | git branch --move | ブランチ名変更 |
| gbnm | git branch --no-merged | マージされていないブランチ表示 |
| gbr | git branch --remote | リモートブランチ一覧 |
| ggsup | git branch --set-upstream-to=origin/現在のブランチ | アップストリーム設定 |
| gbg | (複雑なコマンド) | 削除されたリモートブランチ表示 |
| gbgd | (複雑なコマンド) | 削除されたリモートブランチをローカル削除 |
| gbgD | (複雑なコマンド) | 削除されたリモートブランチを強制削除 |
Checkout / Switch(チェックアウト/切り替え)
| エイリアス | コマンド | 用途 |
|---|---|---|
| gco | git checkout | ブランチ切り替え |
| gcor | git checkout --recurse-submodules | サブモジュール再帰的にチェックアウト |
| gcb | git checkout -b | 新規ブランチ作成して切り替え |
| gcB | git checkout -B | ブランチ強制作成して切り替え |
| gcm | git checkout メインブランチ | メインブランチへ切り替え |
| gcd | git checkout developブランチ | developブランチへ切り替え |
| gsw | git switch | ブランチ切り替え(新コマンド) |
| gswc | git switch --create | 新規ブランチ作成して切り替え |
| gswm | git switch メインブランチ | メインブランチへ切り替え |
| gswd | git switch developブランチ | developブランチへ切り替え |
Clone(クローン)
| エイリアス | コマンド | 用途 |
|---|---|---|
| gcl | git clone --recurse-submodules | サブモジュール含めてクローン |
| gclf | (複雑なコマンド) | shallow cloneで高速クローン |
Diff(差分)
| エイリアス | コマンド | 用途 |
|---|---|---|
| gd | git diff | 差分表示 |
| gdca | git diff --cached | ステージング済み差分表示 |
| gds | git diff --staged | ステージング済み差分表示 |
| gdw | git diff --word-diff | 単語単位の差分表示 |
| gdcw | git diff --cached --word-diff | ステージング済み単語差分 |
| gdup | git diff @{upstream} | アップストリームとの差分 |
| gdt | git diff-tree --no-commit-id --name-only -r | ファイル名のみ差分表示 |
Fetch(フェッチ)
| エイリアス | コマンド | 用途 |
|---|---|---|
| gf | git fetch | フェッチ |
| gfa | git fetch --all --tags --prune --jobs=10 | 全リモートを並列フェッチ |
| gfo | git fetch origin | originからフェッチ |
Pull(プル)
| エイリアス | コマンド | 用途 |
|---|---|---|
| gl | git pull | プル |
| gpr | git pull --rebase | リベースしてプル |
| gprv | git pull --rebase -v | 詳細表示でリベースプル |
| gpra | git pull --rebase --autostash | 自動stashしてリベースプル |
| gprav | git pull --rebase --autostash -v | 詳細表示で自動stash & リベースプル |
| ggpull | git pull origin 現在のブランチ | 現在のブランチをプル |
| gprom | git pull --rebase origin メインブランチ | メインブランチをリベースプル |
| gpromi | git pull --rebase=interactive origin メインブランチ | 対話的リベースプル |
| gprum | git pull --rebase upstream メインブランチ | upstreamからリベースプル |
| gprumi | git pull --rebase=interactive upstream メインブランチ | upstreamから対話的リベースプル |
| gluc | git pull upstream 現在のブランチ | upstreamから現在のブランチをプル |
| glum | git pull upstream メインブランチ | upstreamからメインブランチをプル |
| ggpur | ggu | (gguのエイリアス) |
Push(プッシュ)
| エイリアス | コマンド | 用途 |
|---|---|---|
| gp | git push | プッシュ |
| gpd | git push --dry-run | プッシュのドライラン |
| gpf | git push --force-with-lease | 安全な強制プッシュ |
| gpf! | git push --force | 強制プッシュ |
| gpv | git push --verbose | 詳細表示でプッシュ |
| gpoat | git push origin --all && git push origin --tags | 全ブランチとタグをプッシュ |
| gpod | git push origin --delete | リモートブランチ削除 |
| ggpush | git push origin 現在のブランチ | 現在のブランチをプッシュ |
| gpsup | git push --set-upstream origin 現在のブランチ | アップストリーム設定してプッシュ |
| gpsupf | (複雑なコマンド) | アップストリーム設定して安全に強制プッシュ |
| gpu | git push upstream | upstreamへプッシュ |
Log(ログ)
| エイリアス | コマンド | 用途 |
|---|---|---|
| glo | git log --oneline --decorate | 1行形式のログ |
| glog | git log --oneline --decorate --graph | グラフ付き1行ログ |
| gloga | git log --oneline --decorate --graph --all | 全ブランチのグラフログ |
| glg | git log --stat | 統計付きログ |
| glgp | git log --stat --patch | 統計とパッチ付きログ |
| glgg | git log --graph | グラフ形式ログ |
| glgga | git log --graph --decorate --all | 全ブランチのグラフログ |
| glgm | git log --graph --max-count=10 | 最新10件のグラフログ |
| glol | (カスタム形式) | 色付きグラフログ |
| glola | (カスタム形式) | 全ブランチの色付きグラフログ |
| glols | (カスタム形式) | 統計付き色付きグラフログ |
| glod | (カスタム形式) | 日付付きグラフログ |
| glods | (カスタム形式) | 短縮日付付きグラフログ |
Merge(マージ)
| エイリアス | コマンド | 用途 |
|---|---|---|
| gm | git merge | マージ |
| gma | git merge --abort | マージ中止 |
| gmc | git merge --continue | マージ継続 |
| gms | git merge --squash | squashマージ |
| gmff | git merge --ff-only | fast-forwardのみマージ |
| gmom | git merge origin/メインブランチ | originのメインブランチをマージ |
| gmum | git merge upstream/メインブランチ | upstreamのメインブランチをマージ |
| gmtl | git mergetool --no-prompt | マージツール起動 |
| gmtlvim | git mergetool --no-prompt --tool=vimdiff | vimdiffでマージツール起動 |
Rebase(リベース)
| エイリアス | コマンド | 用途 |
|---|---|---|
| grb | git rebase | リベース |
| grba | git rebase --abort | リベース中止 |
| grbc | git rebase --continue | リベース継続 |
| grbi | git rebase --interactive | 対話的リベース |
| grbo | git rebase --onto | ontoリベース |
| grbs | git rebase --skip | リベーススキップ |
| grbm | git rebase メインブランチ | メインブランチでリベース |
| grbd | git rebase developブランチ | developブランチでリベース |
| grbom | git rebase origin/メインブランチ | originのメインブランチでリベース |
| grbum | git rebase upstream/メインブランチ | upstreamのメインブランチでリベース |
Reset(リセット)
| エイリアス | コマンド | 用途 |
|---|---|---|
| grh | git reset | リセット |
| gru | git reset -- | ファイル指定でリセット |
| grhh | git reset --hard | ハードリセット |
| grhs | git reset --soft | ソフトリセット |
| grhk | git reset --keep | keepリセット |
| gpristine | git reset --hard && git clean --force -dfx | 完全クリーンアップ |
| gwipe | git reset --hard && git clean --force -df | ワークツリークリーンアップ |
| groh | git reset origin/現在のブランチ --hard | originの現在ブランチにハードリセット |
Restore(復元)
| エイリアス | コマンド | 用途 |
|---|---|---|
| grs | git restore | ファイル復元 |
| grss | git restore --source | ソース指定で復元 |
| grst | git restore --staged | ステージング解除 |
Stash(退避)
| エイリアス | コマンド | 用途 |
|---|---|---|
| gsta | git stash push | 変更を退避 |
| gstall | git stash --all | 全変更を退避 |
| gstu | git stash --include-untracked | 未追跡ファイル含めて退避 |
| gstaa | git stash apply | 退避内容を適用 |
| gstc | git stash clear | 退避内容を全削除 |
| gstd | git stash drop | 退避内容を削除 |
| gstl | git stash list | 退避リスト表示 |
| gstp | git stash pop | 退避内容を適用して削除 |
| gsts | git stash show --patch | 退避内容の差分表示 |
Remote(リモート)
| エイリアス | コマンド | 用途 |
|---|---|---|
| gr | git remote | リモート一覧 |
| grv | git remote --verbose | 詳細リモート一覧 |
| gra | git remote add | リモート追加 |
| grrm | git remote remove | リモート削除 |
| grmv | git remote rename | リモート名変更 |
| grset | git remote set-url | リモートURL設定 |
| grup | git remote update | リモート更新 |
Tag(タグ)
| エイリアス | コマンド | 用途 |
|---|---|---|
| gta | git tag --annotate | 注釈付きタグ作成 |
| gts | git tag --sign | 署名付きタグ作成 |
| gtv | git tag | sort -V | バージョン順でタグ一覧 |
| gdct | (複雑なコマンド) | 最新タグを表示 |
その他の便利コマンド
| エイリアス | コマンド | 用途 |
|---|---|---|
| grt | cd "$(git rev-parse --show-toplevel || echo .)" | リポジトリルートへ移動 |
| gclean | git clean --interactive -d | 対話的にクリーン |
| gcp | git cherry-pick | チェリーピック |
| gcpa | git cherry-pick --abort | チェリーピック中止 |
| gcpc | git cherry-pick --continue | チェリーピック継続 |
| gcount | git shortlog --summary --numbered | コミット数集計 |
| gcf | git config --list | 設定一覧 |
| gsh | git show | コミット内容表示 |
| gsps | git show --pretty=short --show-signature | 署名付きコミット表示 |
| grm | git rm | ファイル削除 |
| grmc | git rm --cached | キャッシュから削除 |
| grev | git revert | コミット取り消し |
| greva | git revert --abort | revert中止 |
| grevc | git revert --continue | revert継続 |
| grf | git reflog | reflog表示 |
| gfg | git ls-files | grep | ファイル検索 |
| gignored | git ls-files -v | grep "[1]" | 無視ファイル一覧 |
| gignore | git update-index --assume-unchanged | ファイルを無視 |
| gunignore | git update-index --no-assume-unchanged | ファイル無視解除 |
| gbs | git bisect | bisect開始 |
| gbsb | git bisect bad | bad指定 |
| gbsg | git bisect good | good指定 |
| gbsr | git bisect reset | bisectリセット |
| gbss | git bisect start | bisect開始 |
| gbl | git blame -w | blame表示 |
| gam | git am | パッチ適用 |
| gama | git am --abort | パッチ適用中止 |
| gamc | git am --continue | パッチ適用継続 |
| gams | git am --skip | パッチ適用スキップ |
| gamscp | git am --show-current-patch | 現在のパッチ表示 |
| gsi | git submodule init | サブモジュール初期化 |
| gsu | git submodule update | サブモジュール更新 |
| gwt | git worktree | ワークツリー操作 |
| gwta | git worktree add | ワークツリー追加 |
| gwtls | git worktree list | ワークツリー一覧 |
| gwtmv | git worktree move | ワークツリー移動 |
| gwtrm | git worktree remove | ワークツリー削除 |
| gg | git gui citool | Git GUI起動 |
| gga | git gui citool --amend | Git GUI(修正モード) |
| ghh | git help | ヘルプ表示 |
| gk | gitk --all --branches | gitk起動 |
| gke | gitk --all $(git log --walk-reflogs --pretty=%h) | reflog含むgitk起動 |
実践的な使用例
基本的なワークフロー
# 1. ステータス確認
gst
# 2. 全ファイルをステージング
gaa
# 3. コミット
gcmsg "feat: 新機能を追加"
# 4. プッシュ
gp
ブランチ作業
# 新しいfeatureブランチを作成して切り替え
gcb feature/new-feature
# 作業後、mainブランチに戻る
gcm
# featureブランチをマージ
gm feature/new-feature
# マージ済みブランチを削除
gbd feature/new-feature
リベースワークフロー
# mainブランチの最新を取得
gcm
gl
# featureブランチに切り替え
gco feature/my-feature
# mainブランチの変更をリベース
grbm
# 競合があれば解決後、継続
grbc
# 強制プッシュ(安全な方法)
gpf
便利な小技
# リポジトリのルートディレクトリに移動
grt
# 美しいログ表示
glola
# 最近10件のコミットをグラフで表示
glgm
# 作業中の変更を一時退避
gsta
# 退避した変更を復元
gstp
トラブルシューティング
エイリアスが認識されない
# Oh My Zshが正しく読み込まれているか確認
echo $ZSH
# 設定を再読み込み
source ~/.zshrc
既存のエイリアスと競合する
独自のエイリアスを定義したい場合は、.zshrcの最後に追加します:
# ~/.zshrc の最後に追加
alias gst='git status -sb' # 既存のgstを上書き
プラグインが読み込まれない
.zshrcを確認し、以下の行が存在するか確認してください:
plugins=(git)
カスタマイズ
独自のエイリアスを追加
Oh My Zshのエイリアスに加えて、独自のエイリアスも追加できます:
# ~/.zshrc の最後に追加
# よく使うコミットメッセージ
alias gwip='git add -A && git commit -m "WIP"'
alias gsave='git add -A && git commit -m "SAVE"'
# プロジェクト固有のブランチ切り替え
alias gdev='git checkout develop'
alias gstg='git checkout staging'
他の便利なプラグインと組み合わせる
# ~/.zshrc
plugins=(
git
docker
kubectl
npm
yarn
vscode
)
まとめ
Oh My Zshのgitプラグインを導入することで、以下のメリットがあります:
-
タイピング量の削減:
git statusがgstの3文字で済む - 作業効率の向上: 頻繁に使うコマンドを素早く実行できる
- ミスの削減: 複雑なオプションを覚える必要がない
- 統一された開発環境: チーム全体で同じエイリアスを共有できる
最初は覚えるのが大変かもしれませんが、毎日使っているうちに自然と身につきます。まずは基本的なgst、gaa、gcmsg、gpあたりから使い始めて、徐々に使えるエイリアスを増やしていくのがおすすめです。
参考リンク
-
[:lower:] ↩︎
Discussion