Die Kommandozeile
Aus einem Terminal werden zwei Arten von Fragen gestellt, und gitcito
beantwortet beide.
Die erste lautet „zeig mir das“ — du bist in einem Klon, etwas will angesehen werden, und die App ist der richtige Ort dafür. Solche Aufrufe öffnen ein Fenster, so nah wie möglich an dem, wonach du gefragt hast.
Die zweite lautet „sag es mir jetzt“ — ein Hook, ein CI-Job oder du selbst, mitten in einer Pipe, mit dem Wunsch nach einer Antwort und einem Exitcode statt eines Fensters. Diese starten die App nie: sie schreiben auf stdout und gehen aus dem Weg.
gitcito . # diesen Ordner öffnen
gitcito blame src/api.ts -l 84 # …beim Blame dieser Zeile
gitcito doctor # kein Fenster: prüft das Repo, Exit 1 bei Fehlern
Installieren
Befehlspalette (⌘K) → 'gitcito'-Befehl im PATH installieren. Unter
macOS wird ein kleiner Shim nach /usr/local/bin oder /opt/homebrew/bin
verlinkt; Administratorrechte werden nur verlangt, wenn keines von beiden für
dich schreibbar ist. Unter Linux landet er in ~/.local/bin und braucht gar
keine Rechte. Derselbe Befehl deinstalliert ihn wieder. Windows wird noch nicht
unterstützt.
Danach, optional:
gitcito completions zsh >> ~/.zshrc # oder bash, oder fish
Dinge öffnen
| Befehl | Öffnet |
|---|---|
gitcito [pfad] |
Das Repository (Standard: das aktuelle Verzeichnis) |
gitcito open <name> |
Ein Repository über seinen Tab-Namen — gitcito open api |
gitcito diff |
Die Arbeitskopie-Änderungen |
gitcito graph |
Den Commit-Graphen |
gitcito show <ref> |
Einen Commit — HEAD~2, ein Tag, ein kurzer Hash |
gitcito blame <datei> |
Blame für eine Datei; mit -l 84 direkt zur Zeile |
gitcito search <suche> |
Die Codesuche, Suchbegriff bereits eingetragen |
gitcito stack, stash, reflog, conflicts, todos, chat, settings |
Dieses Panel |
gitcito ci, clean, bisect, absorb, snapshots, insights, terminal |
…und so weiter |
gitcito help verbs gibt die vollständige Liste aus. Drei Optionen gelten für
alle: -n <name> setzt den angezeigten Tab-Namen, -g <gruppe> legt es in einen
Gruppen-Tab (der bei Bedarf entsteht), und -l <n> wählt eine Zeile.
Gitcito ist eine Einzelinstanz: gitcito bei geöffneter App reicht die
Anfrage an dieses Fenster weiter, statt eine zweite Kopie zu starten. Ein bereits
geöffneter Pfad — als Tab oder in einer Gruppe — wird fokussiert, nicht
dupliziert. Ein Verzeichnis, das noch kein Repository ist, öffnet trotzdem und
bietet „Repository hier initialisieren“ an.
Im Terminal antworten
Diese geben aus und beenden sich. Es öffnet sich kein Fenster, und die App muss nicht einmal laufen.
gitcito status
Branch, Tracking, Vorsprung/Rückstand, Arbeitskopie, Stashes und — falls das
Repository sie mitbringt — die Push-Checkliste aus
.gitcito.json. Exit 1, wenn die Arbeitskopie Konflikte hat,
also funktioniert gitcito status || echo blockiert.
gitcito doctor [--fix]
Führt dieselben Prüfungen aus wie das Panel für die
Repository-Konfiguration: Node-Version, Submodule, LFS,
core.hooksPath, benötigte Dateien. Exit 1, wenn eine Prüfung fehlschlägt —
genau darum geht es: Regeln, die ein Repository deklariert, sind wenig wert, wenn
nur die Person mit offener Oberfläche sie je sieht:
- run: gitcito doctor # in der CI, vor allem Teuren
--fix wendet die Reparaturen an, die der Doktor kennt (Submodule
initialisieren, lfs pull, core.hooksPath setzen, eine Datei aus ihrem
Beispiel kopieren), und prüft erneut. Er führt nie einen Befehl aus, den die
Konfiguration geliefert hat — der Satz an Reparaturen ist geschlossen.
Warnungen lassen den Lauf nicht scheitern. Eine Warnung heißt, dass der Doktor etwas nicht feststellen konnte, nicht dass etwas falsch ist; Builds daran scheitern zu lassen, machte die Datei zu teuer in der Anschaffung.
gitcito commit-check [datei]
Prüft eine Commit-Nachricht. Ohne Argument liest sie .git/COMMIT_EDITMSG;
-m "…" prüft eine Zeichenkette. Sie weiß, was das Repository deklariert hat:
ein unbekannter Scope ist ein Fehler, wenn .gitcito.json Scopes auflistet,
und sonst bloß ein Stilhinweis. In einen Hook einbauen:
# .husky/commit-msg
gitcito commit-check "$1"
gitcito config init | show | check
init liest das Repository und schlägt eine .gitcito.json aus dem vor, was
ohnehin schon da ist — .nvmrc, .gitmodules, ein .env.example ohne .env,
die Commit-Scopes, die die Historie verwendet. --dry-run gibt aus, statt zu
schreiben. show druckt die aktuelle Datei; check validiert sie und listet
jedes Feld auf, das verworfen würde.
gitcito repos [filter]
Jedes Repository, das Gitcito kennt — offene Tabs zuerst, dann die zuletzt
benutzten — mit seiner Gruppe. --paths gibt nackte Pfade aus, einen pro Zeile,
zum Skripten:
cd "$(gitcito repos --paths api | head -1)"
Gitcito als Editor von git
gitcito editor install
setzt core.editor und sequence.editor auf gitcito --wait. Ab dann öffnen
git commit (ohne -m), git commit --amend, git tag -a und git rebase -i
ihre Datei in Gitcito statt in vim, mit Zeichenzähler und denselben Hinweisen
zur Commit-Nachricht wie im Composer.

Entscheidend ist das Wort wartet: git hängt an diesem Dialog. Also
- Speichern & fortfahren schreibt die Datei zurück, und git macht weiter.
- Abbrechen schreibt eine leere Datei, was git als Abbruch liest.
- Den Dialog anders zu schließen — Escape, der Hintergrund, Gitcito beenden — zählt als Abbrechen. Ein Terminal, das ewig wartet, wäre weit schlimmer als eine Nachricht, die man neu tippen muss.
--local beschränkt es auf ein Repository, gitcito editor uninstall macht es
rückgängig.
Was sie nicht tut
- Kein Terminal-Verb verändert das Repository.
doctor --fixist die einzige Ausnahme, und seine Reparaturen sind eine feste Liste, die keine Konfigurationsdatei erweitern kann. reposliest nur. Die laufende App besitzt ihre Einstellungsdatei; die CLI liest sie und schreibt sie nie.- Ein Verb, das die installierte App nicht kennt, wird ignoriert, nicht abgelehnt — ein neuerer Shim öffnet auf einer älteren App trotzdem das Repository.
- Für Windows gibt es noch keinen Shim. Die Verben sind alle implementiert; nur der Installationsweg fehlt.
Siehe auch: Arbeitsbereiche, Tabs und Gruppen · Repository-Konfiguration · Committen