Gitを操作するためのクライアントツールは様々便利なものがあるが、自分はずっと秘伝のタレのようなスクリプトを組んでaliasを用意して使っていた。
aliasを覚えていればCLIで最速のGIt操作ができるのだが、スクリプトの保守性やら柔軟性をずっと気にしていたので自前でスクラッチしてみた。
CLIだけでは操作性の充実に限界があると思ったのでCUIも対応してみた。
https://github.com/jonas/tig のような高機能なTUIツールもあり、利用に興味があったのだが、使い方を覚えるのが億劫で、もっとシンプルに使えるものが欲しかった。
ggcはGo言語で実装されたGit操作支援ツールである。CLI(コマンドラインインターフェース)としても、CUI(キャラクタユーザーインターフェース)としても利用できる。高速かつシンプルな操作性を追求し、日常的なGit作業をより快適にすることを目的としている。
ggc <command> [args]
の形式で直接操作できるgit clone <repository URL>
make build
ビルド後、生成されたバイナリをPATHの通ったディレクトリに配置する。
go install github.com/bmf-san/ggc@latest
インストール後、ggc
コマンドが利用可能となる。
ggc
は引数の有無に応じて、CLIモードとCUIモードを自動的に切り替える。
# CUIモード(補完付きUI起動)
ggc
# CLIモード(直接コマンド指定)
ggc branch current
1つのバイナリで両モードに対応しており、用途に応じた柔軟な操作が可能である。
単にggc
と入力して実行することで、インクリメンタルサーチ付きのコマンド選択UIが起動する。
コマンド名の一部をタイプすることで絞り込みができ、Enterで実行できる。
コマンドによっては追加の引数入力やファイル・ブランチ選択などの対話的操作が発生する。
ggcコマンド例 | 実際のgitコマンド | 説明 |
---|---|---|
ggc add | git add | ファイルのステージング |
ggc branch current | git rev-parse --abbrev-ref HEAD | 現在のブランチ名を表示 |
ggc push current | git push origin | 現在のブランチをpush |
ggc log simple | git log --oneline | シンプルなログ表示 |
ggc commit-push | add/commit/pushを対話的に一括実行 | ファイル選択→コミット→push |
BashやZsh用の補完スクリプトも同梱している。
tools/completions/ggc.bash
を source することで、サブコマンド補完が有効になる。
このツールはCursorに殆どのコードを実装させた。
要件や設計を伝えてコードを書かかせたのだが、それなりに単純なツールであるためか、動作するものを精度高く実装してくれた。
コマンドの命名規則などは人間が頭を悩ますよりも規則性のあるシンプルで分かりやすいものを一発で提案してくれたのはとても良かった。
ggcはGit操作をCLI・CUIでサポートするツールである。
まだ荒削りの部分も多いが、それなりに使える状態にはなっていると思う。
今後自分で使いつつ改善を重ねていこうと思う。