👌

Oh My ZshでGit操作を爆速化!便利なエイリアス200個を使いこなす

に公開

はじめに

Gitコマンドを毎回フルで打つのは面倒ですよね。git statusgstgit 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 statusgstの3文字で済む
  • 作業効率の向上: 頻繁に使うコマンドを素早く実行できる
  • ミスの削減: 複雑なオプションを覚える必要がない
  • 統一された開発環境: チーム全体で同じエイリアスを共有できる

最初は覚えるのが大変かもしれませんが、毎日使っているうちに自然と身につきます。まずは基本的なgstgaagcmsggpあたりから使い始めて、徐々に使えるエイリアスを増やしていくのがおすすめです。

参考リンク

脚注
  1. [:lower:] ↩︎

株式会社ZOZO

Discussion