GitUI はターミナルで GUI の快適さを提供
- キーボードだけで高速かつ直感的に操作可能
- ホットキーを覚える必要がない 状況に応じたヘルプを提供
- 変更内容のレビュー、コミット、修正コミット(フックを含む: pre-commit, commit-msg, post-commit, prepare-commit-msg)
- ファイル、ハンク、行のステージ、アンステージ、取り消し、リセット
- スタッシュ(保存、適用、削除、確認)
- リモートとのプッシュ/フェッチ
- ブランチ一覧(作成、リネーム、削除、チェックアウト、リモート)
- コミットログの閲覧/検索、コミット済み変更の差分(diff)確認
- レスポンシブなターミナル UI
- 滑らかな操作のための非同期 git API
- サブモジュール対応
動機
- ターミナルでほとんどの git 作業を行うが、インデックス、コミット、差分(diff)、スタッシュ、blame、ログといったいくつかの用途では git GUI をよく使う。
- 大規模リポジトリでは、人気のある git GUI がしばしば応答しなくなったり使えなくなったりする。
- GitUI は、ターミナル内で git GUI のユーザー体験と快適さを提供しつつ、高い移植性、高速性、無料、オープンソースを実現している。
ベンチマーク
- RustBerlin ミートアップの発表で、
lazygit、tig、gitui を比較し、Linux の git リポジトリ全体(90 万件以上のコミットを含む)をパース:
gitui: 24秒 ✅, 0.17GB メモリ ✅, 1.4MB バイナリ, フリーズなし ✅, クラッシュなし ✅
lazygit: 57秒, 2.6GB メモリ, 16MB バイナリ, フリーズあり, ときどきクラッシュ
tig: 4分20秒, 1.3GB メモリ, 0.6MB バイナリ ✅, ときどきフリーズ, クラッシュなし ✅
1.0 へのロードマップ
1.0 を宣言する前の高レベル目標:
- ログタブでブランチ構造を可視化 (#81)
- インタラクティブリベース (#32)
既知の制限事項
- スパースリポジトリ(sparse repo)非対応 (#1226)
- GPG 署名非対応 (#97)
- git-lfs 非対応 (#1089)
- https が必要な credential.helper は 明示的に 設定する必要がある (#800)
- 現時点では、このツールは git shell を完全に置き換えるものではないが、両者はうまく補完し合う。
gitui の優先順位は、git shell で行うと不便な機能、たとえばスタッシュや行・ハンクのステージングなどにある。
- 最終的には
gitui をワンストップソリューションにできるだろうが、そのためには支援が必要であり、現在は余暇時間のプロジェクトである。
- あらゆる支援とスポンサーを歓迎します! ❤️
インストール
- GitUI はベータ版であり、バグや未実装機能がある可能性がある。しかし個人的な利用にはかなり安定しており、開発中にも使われている。
- さまざまなパッケージマネージャーを通じてインストール可能。
ビルド
よくある質問(FAQs)
診断
- ロギングを有効にした状態で
gitui -l を実行するとログが記録される。
カラーテーマ
gitui はライトテーマとダークテーマの両方のターミナルで自動的に動作する。
- すべてを好みに合わせてカスタマイズできる。
キーバインディング
スポンサー
インスピレーション
lazygit、tig、GitUp などから着想を得ている。
- ターミナルツールでマップビューを利用できる方法を考えるのは良いことだろう。
GN⁺の意見
- GitUI は、ターミナルを好むユーザーに GUI の利便性を提供しつつ、高速さと低メモリ使用量を誇る。これは特に大規模リポジトリを扱う際に非常に重要である。
- オープンソースプロジェクトとして、開発者コミュニティの支援と貢献を通じて継続的に発展しており、ユーザーのフィードバックを反映しながら機能改善を進めている。
- GitUI は、開発者がターミナル環境でも効率的に git 作業を行えるよう支援するツールであり、特にキーボード操作に慣れたユーザーにとって非常に有用と思われる。
1件のコメント
Hacker Newsの意見