コマンドライン
ターミナルから発せられる問いは二種類あり、gitcito はそのどちらにも答えます。
一つ目は 「これを見せて」 です。クローンの中にいて、何かを見たい。それを見るには アプリが適した場所です。この種の呼び出しはウィンドウを開き、尋ねたものにできるだけ 近い場所を表示します。
二つ目は 「今すぐ教えて」 です。フック、CI ジョブ、あるいはパイプの途中にいる あなたが、ウィンドウではなく答えと終了コードを求めている。この種の呼び出しはアプリを 起動しません。標準出力に書いて、すぐ道を空けます。
gitcito . # このフォルダを開く
gitcito blame src/api.ts -l 84 # …その行の blame で
gitcito doctor # ウィンドウなし: リポジトリを検査し、失敗なら 1 で終了
インストール
コマンドパレット(⌘K)→ 'gitcito' コマンドを PATH にインストール。
macOS では小さなシムを /usr/local/bin か /opt/homebrew/bin にシンボリック
リンクし、どちらにも書き込めない場合にだけ管理者権限を求めます。Linux では権限の
要らない ~/.local/bin に入ります。同じコマンドでアンインストールできます。Windows
はまだ非対応です。
必要なら、続けて:
gitcito completions zsh >> ~/.zshrc # bash や fish も可
開く
| コマンド | 開くもの |
|---|---|
gitcito [パス] |
リポジトリ(既定はカレントディレクトリ) |
gitcito open <名前> |
タブ名でリポジトリを — gitcito open api |
gitcito diff |
作業ツリーの変更 |
gitcito graph |
コミットグラフ |
gitcito show <ref> |
単一のコミット — HEAD~2、タグ、短いハッシュ |
gitcito blame <ファイル> |
ファイルの blame。-l 84 でその行へ |
gitcito search <検索語> |
コード検索(検索語を入力済み) |
gitcito stack, stash, reflog, conflicts, todos, chat, settings |
該当パネル |
gitcito ci, clean, bisect, absorb, snapshots, insights, terminal |
…など |
gitcito help verbs が全一覧を表示します。三つのオプションはすべてに効きます。
-n <名前> はタブの表示名、-g <グループ> はグループタブへの配置(必要なら作成)、
-l <n> は行の指定です。
Gitcito は単一インスタンスです。アプリが開いている状態で gitcito を実行すると、
二つ目のコピーを起動する代わりに、その要求を既存のウィンドウへ渡します。すでに開いて
いるパスは — タブでもグループ内でも — 複製されずフォーカスされます。まだリポジトリ
でないフォルダも開き、「ここにリポジトリを作成」の導線を示します。
ターミナルで答える
これらは出力して終了します。ウィンドウは開かず、アプリが起動している必要すらありません。
gitcito status
ブランチ、追跡、先行/遅れ、作業ツリー、スタッシュ、そしてリポジトリが用意していれば
.gitcito.json の push チェックリスト。作業ツリーに衝突がある
ときは 1 で終了するので、gitcito status || echo ブロック中 が使えます。
gitcito doctor [--fix]
リポジトリ設定パネルと同じ検査を実行します。Node のバージョン、
サブモジュール、LFS、core.hooksPath、必須ファイル。いずれかが失敗すれば 1 で
終了します。それこそが要点です。リポジトリが宣言した規則も、GUI を開いている人しか
見ないのでは値打ちがありません。
- run: gitcito doctor # CI で、高価な処理の前に
--fix は doctor が知っている修復(サブモジュールの初期化、lfs pull、
core.hooksPath の設定、例ファイルからのコピー)を適用し、再検査します。設定ファイル
が与えたコマンドを実行することは決してありません。修復の集合は閉じています。
警告では実行は失敗しません。警告は doctor が何かを判定できなかったという意味で、何かが 壊れているという意味ではありません。それでビルドを落とせば、このファイルは導入コストが 高すぎるものになってしまいます。
gitcito commit-check [ファイル]
コミットメッセージを検査します。引数なしなら .git/COMMIT_EDITMSG を読み、-m "…"
なら文字列を検査します。リポジトリが宣言した内容を知っています。.gitcito.json が
スコープを列挙していれば未知のスコープはエラー、列挙していなければ単なる書き方の
助言です。フックに組み込むには:
# .husky/commit-msg
gitcito commit-check "$1"
gitcito config init | show | check
init はリポジトリを読み、すでにあるもの — .nvmrc、.gitmodules、.env のない
.env.example、履歴で使われているコミットスコープ — から .gitcito.json を提案し
ます。--dry-run は書き込まずに表示します。show は現在のファイルを表示し、check
は検証して破棄される項目を列挙します。
gitcito repos [フィルタ]
Gitcito が知っているすべてのリポジトリ(まず開いているタブ、次に最近使ったもの)を
グループ付きで表示します。--paths はスクリプト向けに、パスだけを 1 行ずつ出力します。
cd "$(gitcito repos --paths api | head -1)"
Gitcito を git のエディタにする
gitcito editor install
これで core.editor と sequence.editor が gitcito --wait になります。以降、
git commit(-m なし)、git commit --amend、git tag -a、git rebase -i は
vim ではなく Gitcito でファイルを開き、文字数カウンタとコンポーザーと同じメッセージの
ヒントが付きます。

肝心なのは待っているという点です。git はそのダイアログで停止しています。したがって
- 保存して続行 はファイルを書き戻し、git は先へ進みます。
- キャンセル は空のファイルを書き、git はそれを中止と読みます。
- それ以外の方法でダイアログを閉じること — Escape、背景、Gitcito の終了 — も キャンセル扱いです。永遠に待たされるターミナルは、書き直すメッセージよりはるかに ひどい結果だからです。
一つのリポジトリだけに適用するには --local を付け、gitcito editor uninstall で
元に戻します。
しないこと
- ターミナルの動詞はリポジトリを変更しません。 例外は
doctor --fixだけで、その 修復は固定の一覧です。設定ファイルが増やせるものではありません。 reposは読み取り専用です。 設定ファイルは動作中のアプリのもので、CLI は読む だけで決して書きません。- インストール済みのアプリが知らない動詞は無視されます(拒否ではありません)。新しい シムを古いアプリに対して使っても、リポジトリは開きます。
- Windows 用のシムはまだありません。 動詞はすべて実装済みで、欠けているのは インストール経路だけです。
関連: ワークスペース・タブ・グループ · リポジトリ設定 · コミット