Ubuntu 24.04向けの独立したGitリポジトリ管理GUIです。Python 3とPySide6で実装し、Git CLIを通じて操作します。ROS 2には依存しません。
- ローカルGitリポジトリの登録・登録解除
- 任意フォルダをワークスペースとして登録し、内部のGitリポジトリを自動検出
- URL指定Clone(ブランチ指定、サブモジュール取得オプション)
- Fetch(登録された全Remoteから取得)
- 起動時に登録済みリポジトリを順次自動Fetch(設定でON / OFF可能)
- 「Fetchして更新」によるFetchとAhead / Behind・リモート更新情報の再取得
- Fetch後のリモート専用コミット一覧、変更ファイル一覧、ファイルDiff表示
- リモート更新の通知とAhead / Behindに基づく推奨操作の表示
- ネットワーク通信を行わない「ローカル更新」
- Pull(未コミット変更がある場合は停止、--ff-onlyのみ)
- Push(送信先Remote・URL・ブランチを確認、Force Pushなし)
- Git Porcelain v2によるステージング領域・作業ツリー状態の個別判定
- 状態別Tree表示(Staged / Unstaged / Untracked / Deleted / Conflict / Clean)
- ファイルの状態を色で表示し、Cleanファイルも常時表示
- フォルダ単位の再帰選択、変更ファイルの全選択・選択解除
- 選択ファイルのStage / Unstage、Diff表示
- ステージ済み変更のCommit(Commit対象ファイルを事前表示)
- 選択ファイルをAdd → Commit → Pushする一括操作
- Remoteの追加・Fetch URL変更・削除
- ローカル/リモートブランチ一覧とUpstream・Ahead / Behind表示
- ローカルブランチ作成時のRemoteへの自動Push・Upstream設定
- ローカル/対応リモートブランチの名前変更・削除(コミット損失防止チェック付き)
- Fetch時のリモートブランチ追跡情報更新と、削除済み追跡参照のPrune
- コミット履歴とCommit概要
- 操作履歴をSQLiteに保存
- Gitネットワーク操作はQProcessで非同期実行
- Ubuntu 24.04
- Python 3.12(Python 3.10以上)
- Git
- pip / venv
- GUIセッション(Qtが利用できるデスクトップ環境)
cd /home/miquiteru/git_manager
./install.shPySide6はシステムPythonに入れず、プロジェクト内の .venv にインストールします。
cd /home/miquiteru/git_manager
./run.shアプリケーション一覧に登録する場合:
./install-desktop.sh- 設定: ~/.config/git-manager/settings.json
- 操作履歴: ~/.local/share/git-manager/operations.sqlite3
リポジトリ本体のファイルはアプリの設定場所へコピー・移動しません。
- Clone先が既に存在する場合は上書きしません。
- Pullは作業ツリーに変更がある場合は実行しません。
- PullはFast-forwardのみ許可します。
- Push前にRemote・送信先URL・ブランチを確認します。
- Force PushはGUIに用意していません。
- ブランチ作成時は選択したRemoteへPushしてUpstreamを設定します。Push失敗時は可能な範囲で作成したローカルブランチを元に戻します。
- ブランチ名変更は新しいリモートブランチ作成後にローカル名・Upstreamを切り替え、最後に旧リモートブランチを削除します。途中失敗時は既存ブランチを不用意に削除せず、部分成功を操作ログに残します。
- ブランチ削除は現在のブランチにローカル・リモート双方のCommitが統合済みの場合だけ実行します。
- 別のGit worktreeで使用中のブランチは名前変更・削除しません。
- 登録解除はアプリの管理対象から外すだけで、実ファイルを削除しません。
- Git認証情報をアプリ独自に保存しません。SSH Agent、Git Credential Helperなど既存のGit認証設定を利用してください。
- Git操作はシェル経由ではなく、引数配列でGitプロセスに渡します。
- GitHub APIによるアカウント認証、リポジトリ検索・新規作成は未実装です。通常のGit URLでCloneできます。
- GitLab等もGit CLIで扱えるリポジトリであればURL指定で利用できます。
- Merge ConflictをGUI内で解決する機能、Git LFS専用管理は未実装です。
- ブランチ名変更・削除のリモート対象は、そのローカルブランチに設定されたUpstreamです。同名でも別Remoteのブランチは自動変更しません。
- Ahead / Behindとリモート更新一覧は最後に取得したリモート追跡情報に基づきます。起動時自動Fetchまたは「Fetchして更新」で最新化してください。
- 大きなファイルや特殊なファイル名(改行を含む等)の差分表示は今後の改善対象です。
開発用テスト依存関係を追加する場合:
.venv/bin/python -m pip install -r requirements-dev.txtUbuntuでROS 2のpytestプラグイン自動読込と干渉する場合は、次のように実行します。
QT_QPA_PLATFORM=offscreen PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 .venv/bin/python -m pytest