10 ポイント 投稿者 GN⁺ 2024-01-08 | 1件のコメント | WhatsAppで共有

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 ミートアップの発表で、lazygittiggitui を比較し、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 はベータ版であり、バグや未実装機能がある可能性がある。しかし個人的な利用にはかなり安定しており、開発中にも使われている。
  • さまざまなパッケージマネージャーを通じてインストール可能。

ビルド

  • 最小サポート rust/cargo バージョン: 1.65
  • openssl 依存関係のビルド要件(https://docs.rs/openssl/latest/openssl/ を参照)
  • 完全なテストスイートを実行するには Python が必要(python として呼び出せる必要がある)
  • cargo install gituigitui をビルドしてインストールするのが最も簡単。

よくある質問(FAQs)

  • FAQs ページを参照

診断

  • ロギングを有効にした状態で gitui -l を実行するとログが記録される。

カラーテーマ

  • gitui はライトテーマとダークテーマの両方のターミナルで自動的に動作する。
  • すべてを好みに合わせてカスタマイズできる。

キーバインディング

  • キーバインディングはカスタマイズ可能。

スポンサー

インスピレーション

  • lazygittigGitUp などから着想を得ている。
  • ターミナルツールでマップビューを利用できる方法を考えるのは良いことだろう。

GN⁺の意見

  • GitUI は、ターミナルを好むユーザーに GUI の利便性を提供しつつ、高速さと低メモリ使用量を誇る。これは特に大規模リポジトリを扱う際に非常に重要である。
  • オープンソースプロジェクトとして、開発者コミュニティの支援と貢献を通じて継続的に発展しており、ユーザーのフィードバックを反映しながら機能改善を進めている。
  • GitUI は、開発者がターミナル環境でも効率的に git 作業を行えるよう支援するツールであり、特にキーボード操作に慣れたユーザーにとって非常に有用と思われる。

1件のコメント

 
GN⁺ 2024-01-08
Hacker Newsの意見
  • キーボードだけで高速かつ直感的に操作

    • 作者は善意でこのプログラムを作ったのだろうが、インストール後の最初の試行では xterm のウィンドウサイズ調整やファイルツリーのペインサイズ調整ができなかった。キーボードでもその機能を見つけられず、もしマウスでサイズ調整できるなら、そのほうがはるかに簡単で速いだろう。
  • lazygit に着想を得たプロジェクト

    • lazygit ユーザーとして、lazygit に何が足りないのか気になる。lazygit は非常に便利に使えている。
  • 大規模リポジトリで人気のある git GUI の失敗

    • 大規模リポジトリや深いディレクトリ構造で git の状態確認に時間がかかる問題は経験している。GUI、TUI、コマンドラインの間に実際の違いがあるのか疑問だ。
  • 新しいプロジェクトへの期待

    • GitExtensions が Linux ネイティブアプリケーションとして移植されることを望む。さまざまな UI を試したが、GitExtensions ほど良いものは見つからなかった。
  • クリック&ドラッグ UI についての質問

    • git でブランチ操作をドラッグ&ドロップで行える UI があるのか気になる。
  • Neogit プラグインの使用経験

    • 約1か月前から使い始めた Neogit プラグインに似ている。最初はキーバインドが難しかったが、慣れると以前のワークフローよりはるかに速い。
  • 個人的なツール使用経験

    • さまざまなツールを試したが、いつも何か重要な機能が欠けていたり、期待どおりに動かなかったりして、結局 tig に戻ってしまう。GitUI にはブランチ構造をうまく見せる機能が不足している。
  • 日常的に使っているツール

    • 毎日使うツールとして非常にシンプルで素晴らしい。コミットに署名するには Git 自体を使う必要がある点には注意。
  • 関連リンク

    • GitUI: Terminal UI for Git, Terminal-UI for Git written in Rust に関する Hacker News コメントまとめへのリンクを提供。
  • GUI 使用の具体的な利点についての質問

    • GUI を使ったことがないユーザーが、GUI を使うことで得られる具体的な利点が何かを知りたがっている。