ggcは、Go言語で実装されたGit操作支援ツールである。「覚えやすく、使いやすく、作業効率の向上を図る」ことを目的としており、日常的なGit操作をより快適にすることを意図している。
既存のGitクライアントツールには、機能が豊富すぎて学習コストが高いもの、あるいはシンプルすぎて実用に耐えないものが存在する。ggcはこのギャップを埋めるべく、日常的に使用する機能に特化し、シンプルかつ記憶しやすいコマンド体系を提供する。
通常のGit操作 | ggcによる操作 |
---|---|
git add . → git commit -m "..." → git push |
ggc add-commit-push |
git branch → git checkout ブランチ名 |
ggc branch checkout (対話的選択) |
git stash → git pull → git stash pop |
ggc stash-pull-pop |
上記のように、一般的な操作を1コマンドで簡潔に実行可能である。
add-commit-push
、stash-pull-pop
等を提供golang.org/x/term
のみを使用# 最新の状態に更新
ggc pull current
# 新しいブランチで作業開始(対話的に選択)
ggc branch checkout
# 一括で変更をプッシュ
ggc add-commit-push
# 安全にマージ
ggc stash-pull-pop
go install
による導入最も簡単な導入方法は以下の通りである:
go install github.com/bmf-san/ggc@latest
必要に応じてPATHを設定する:
export PATH=$PATH:$(go env GOBIN)
git clone https://github.com/bmf-san/ggc
cd ggc
make build
ビルド後、生成されたバイナリをPATHの通ったディレクトリに配置する。
引数の有無により自動的にCLIまたはインタラクティブモードが起動される。
# CLI(コマンドを直接指定)
ggc branch current
# インタラクティブモード
ggc
1つのバイナリで両モードをサポートしており、用途に応じた柔軟な操作が可能である。
ggc
を引数なしで実行すると、インクリメンタルサーチによるコマンド選択画面が表示される。
ggc
表示例:
コマンドを選択してください(インクリメンタルサーチ:文字入力で絞り込み、ctrl+n:下移動, ctrl+p:上移動, enter:実行, ctrl+c:終了)
Search: branch
> branch current
branch checkout
branch checkout-remote
branch delete
branch delete-merged
操作手順:
Ctrl+n
/Ctrl+p
で上下移動Enter
で実行コマンドを記憶する必要はなく、入力に応じて候補が表示されるため、直感的な操作が可能である。
ggcコマンド | 実際のgitコマンド | 説明 |
---|---|---|
ggc add <file> |
git add <file> |
ファイルをステージング |
ggc add . |
git add . |
全ファイルをステージング |
ggc add -p |
git add -p |
対話的ステージング |
ggc branch current |
git rev-parse --abbrev-ref HEAD |
現在のブランチ名取得 |
ggc branch checkout |
git branch ... → git checkout <選択> |
対話的ブランチ切り替え |
ggc branch checkout-remote |
git branch -r ... → git checkout -b <n> --track <remote>/<branch> |
リモートブランチから新規作成・切り替え |
ggc branch delete |
git branch ... → git branch -d <選択> |
対話的にローカルブランチ削除 |
ggc push current |
git push origin <branch> |
現在のブランチをプッシュ |
ggc pull current |
git pull origin <branch> |
現在のブランチをプル |
ggc log simple |
git log --oneline |
シンプルなログ表示 |
ggc commit <message> |
git commit -m <message> |
コミット作成 |
ggc fetch --prune |
git fetch --prune |
古いリモート追跡ブランチを削除しつつフェッチ |
ggc clean files |
git clean -f |
ファイルのクリーンアップ |
ggc remote add <n> <url> |
git remote add <n> <url> |
リモート追加 |
ggc stash |
git stash |
作業内容を一時退避 |
ggc rebase interactive |
git rebase -i |
対話的リベース |
ggcコマンド | 実行されるGit操作 | 説明 |
---|---|---|
ggc add-commit-push |
git add . → git commit → git push |
ステージ → コミット → プッシュを一括実行 |
ggc commit-push-interactive |
対話的ステージ → コミット → プッシュ | |
ggc pull-rebase-push |
git pull → git rebase → git push |
プル → リベース → プッシュを一括実行 |
ggc stash-pull-pop |
git stash → git pull → git stash pop |
一時退避 → プル → 復元の一括操作 |
BashおよびZsh向けの補完スクリプトが同梱されている。
# bashの場合
source /path/to/ggc/tools/completions/ggc.bash
# zshの場合(同一スクリプトを使用可能)
source /path/to/ggc/tools/completions/ggc.bash
これを.bashrc
や.zshrc
に追記することで、ターミナル起動時に補完が有効化される。