Alle Seiten
Auf dieser Seite

Git-Änderungen

Git changes (Git-Änderungen) zeigt, was im Git-Repository des Arbeitsordners der Konversation anders ist: den Branch, jede geänderte Datei und zu jeder einen Diff. Nutze es, um die Arbeit eines Agents durchzusehen, bevor du ihn um einen Commit bittest. Es ist ein Viewer. Das Einzige, was etwas ändert, ist der ⬇ Pull-Button.

Öffnen #

Öffne das ⋯-Menü der Konversation und wähl 🌿 Git changes. Ein Fenster öffnet sich über der Konversation. Es liest den Ordner auf dem Relay-Host, sodass du von jedem Browser aus dasselbe siehst.

Der Eintrag steht im Menü jeder offenen Konversation. Er ist ausgeblendet, wenn keine Konversation offen ist, und in der geteilten Nur-Lese-Ansicht.

Welches Repository #

Das Fenster führt git im Arbeitsordner der Konversation aus, dem, den du im Dialog New chat gewählt oder mit 🗂️ Change CWD (Arbeitsordner ändern) gesetzt hast. Git findet das Repository von dort aus, wie in einem Terminal: Ein Ordner innerhalb eines Repositorys zeigt dieses Repository.

Findet git kein Repository, sagt der Header Not a git repository und die Liste The current workspace root is not a git repository. Der ⬇ Pull-Button ist deaktiviert. Ein Ordner, der nur mehrere Repositorys nebeneinander enthält, ist selbst kein Repository und bekommt deshalb ebenfalls diese Meldung. Starte eine Konversation innerhalb des Repositorys, das du prüfen willst.

Arbeitsordner unterhalb der Repository-Spitze

Ist der Arbeitsordner ein Unterordner eines Repositorys, zeigt die Liste trotzdem die Änderungen des ganzen Repositorys, nicht nur die dieses Unterordners. Eine Datei daraus zu öffnen, funktioniert nicht: Jeder Diff lautet No textual changes detected for this file. Starte die Konversation im obersten Ordner des Repositorys, um funktionierende Diffs zu bekommen.

Ein Repository ohne Commits zeigt seinen Branch-Namen, und seine gestagten Dateien werden gelistet. Ein Diff einer gestagten Datei scheitert dort mit der git-Meldung fatal: bad revision 'HEAD'. Diffs von nicht verfolgten Dateien funktionieren.

Der Header zeigt den Branch und daneben, wie weit er von seinem Upstream entfernt ist:

Header Bedeutung
main Der Branch, gleichauf mit seinem Upstream oder ohne einen.
main ↑2 Zwei Commits vor dem Upstream: noch nicht gepusht.
main ↓3 Drei Commits hinter dem Upstream.
main ↑2 ↓3 Beides.
detached HEAD Ein Commit ist ausgecheckt, kein Branch.

Unter dem Branch zeigt eine zweite Zeile den Upstream und die Zahl der geänderten Dateien, etwa origin/main · 4 changed files (1 changed file bei einer). Ein Branch ohne Upstream zeigt keine Pfeile und keinen Upstream-Namen, nur die Zahl. Die Zahlen sind die, die git zuletzt kannte: OAR macht kein Fetch, also ändert sich ↓ erst nach einem Fetch oder Pull.

Pull #

⬇ Pull führt im Ordner ein einfaches git pull aus, ohne Optionen. Sein Tooltip sagt „Pull from upstream“, aber OAR nennt weder Remote noch Branch. Ob es mergt, rebast oder nur vorspult, bestimmt deine git-Konfiguration (pull.rebase, pull.ff). Der Button wird immer angeboten, wenn der Ordner ein Repository ist, auch wenn es nichts zu pullen gibt, und ist deaktiviert, solange das Fenster lädt oder ein Pull läuft (der Button lautet dann Pulling…). Ein Pull kann bis zu 120 Sekunden dauern.

Ist er fertig, sagt eine Zeile unter dem Header Pull: und die letzte Zeile der git-Ausgabe (zum Beispiel Pull: Already up to date.) oder Pull complete., wenn git nichts ausgegeben hat. Lehnt git ab, ist die Zeile rot und lautet Pull failed: gefolgt von der eigenen Meldung von git. Das siehst du bei einem Konflikt, bei lokalen Änderungen, die ein Pull überschreiben würde, oder bei einem Branch ohne Upstream. OAR macht kein Stash, kein Reset und löst nichts auf. Bitte den Agent, das zu klären. Nach jedem Pull wird die Liste neu geladen.

Die Liste #

Jede geänderte Datei ist eine Zeile: gestagte, nicht gestagte und nicht verfolgte Dateien zusammen, nach Pfad sortiert. Eine Zeile zeigt:

  • einen Buchstaben als Badge für den Zustand und den Dateinamen mit seinem Ordner darunter;
  • bei einer umbenannten Datei den alten Pfad nach einem ←;
  • gelöschte Dateien mit durchgestrichenem Namen.

Ein neuer Ordner, den git noch nicht verfolgt, ist eine Zeile für den ganzen Ordner, nicht eine pro Datei darin. Sein Name ist leer, und der Pfad des Ordners steht darunter. Öffnest du ihn, zeigt er No textual changes detected for this file.

Badge Bedeutung
M Geändert
A Hinzugefügt
D Gelöscht
R Umbenannt
C Kopiert
T Typ geändert
U Nicht verfolgt: eine neue Datei, die git noch nicht verfolgt

Eine Datei, die nach dem Stagen bearbeitet wurde, erscheint einmal, mit dem Zustand der Arbeitskopie. Die Liste unterscheidet gestagte nicht von nicht gestagten Änderungen. Fahr mit der Maus über eine Zeile, um den Zustand in Worten und den vollen Pfad zu sehen.

Dateien mit Konflikt

Eine Datei mit einem Merge-Konflikt hat kein eigenes Badge. Eine Datei, die beide Seiten geändert haben (UU in git), zeigt U und das Wort Untracked (Nicht verfolgt), obwohl sie verfolgt wird. Eine Datei, die beide Seiten hinzugefügt haben, zeigt A, eine auf beiden Seiten gelöschte D, und eine auf einer Seite gelöschte D (durchgestrichen) oder U, je nach Seite. Ihr Diff öffnet sich trotzdem und vergleicht sie mit dem letzten Commit. Nutze git status in einem Terminal oder frag den Agent, um den Konflikt zu sehen.

Ein Repository, in dem es nichts zu zeigen gibt, sagt Working tree clean — no changes.

Aktualisieren #

Die Liste ist nicht live. Sie wird gelesen, wenn du das Fenster öffnest, wenn du ↻ (Aktualisieren) drückst, und nach einem Pull. Während ein Agent arbeitet, drück ↻, um seine neuesten Änderungen zu sehen. Das Fenster zu schließen und wieder zu öffnen, bewirkt dasselbe.

Der Diff-Viewer #

Klick eine Zeile an, um den Diff dieser Datei in einem zweiten Fenster über der Liste zu öffnen. Der Diff vergleicht die Datei mit dem letzten Commit, sodass gestagte und nicht gestagte Änderungen zusammen erscheinen. Der Titel ist der Pfad der Datei; darunter stehen der Zustand und die Zahlen, zum Beispiel Modified · +12 −3.

Button Zeigt
Changes (Änderungen) Hinzugefügte und entfernte Zeilen mit je drei unveränderten Zeilen drumherum. Längere unveränderte Abschnitte klappen zu ⋯ 40 unchanged lines zusammen. Das ist der Standard.
Full file (Ganze Datei) Jede Zeile der Datei, mit markierten Änderungen.

Beide Ansichten kommen aus einem Diff, also wechselst du ohne Verzögerung. Die Wahl gilt für die nächsten Dateien, die du öffnest, bis du die Seite neu lädst. Die Zeilen tragen die alten und neuen Zeilennummern; hinzugefügte Zeilen sind grün, entfernte rot.

Datei Was du siehst
Neu (nicht verfolgt) Jede Zeile als hinzugefügt.
Gelöscht Jede Zeile als entfernt.
Umbenannt Der neue Pfad verglichen mit dem letzten Commit: jede Zeile als hinzugefügt, auch wenn sich der Inhalt nicht geändert hat.
Binär Binary file — no text diff available., nur mit dem Zustand und ohne Zahlen.
Keine Textänderung, etwa eine Änderung der Dateirechte No textual changes detected for this file.
Sehr groß Derselbe Diff, vollständig. OAR setzt keine Größengrenze, aber das Lesen des Diffs hat 15 Sekunden und eine Ausgabegrenze von 32 MB. Eine Datei, die sie überschreitet, zeigt statt des Diffs eine Fehlermeldung.

Lange Zeilen werden nicht umbrochen. Scroll seitwärts, um sie zu lesen.

Kann git den Status oder einen Diff nicht lesen, erscheint die Meldung in Rot über der Liste oder anstelle des Diffs.

Schließ den Diff mit ×, Esc oder einem Klick daneben. Die Liste ist dahinter noch offen. ×, Esc oder ein Klick daneben schließen dann die Liste.

Was es nicht kann #

Hier gibt es kein Stagen, Committen, Verwerfen oder Pushen und keine Möglichkeit, eine Datei zu bearbeiten. Zum Committen, Rückgängigmachen einer Änderung oder Pushen bitte den Agent darum, in der Konversation. Ein Commit, den der Agent bei Claude macht, trägt die Zuschreibungszeile, die du gewählt hast; siehe Commit-Zuschreibung. Neu in 0.9.17 Bei DeepSeek trägt er die Zeile, die unter Commit attribution (Commit-Zuschreibung) im Tab DeepSeek gewählt ist, oder die eigene Einstellung des Ordners.

Nach Provider #

Das Fenster ist für jeden Provider gleich, der auf dem Relay-Host läuft: GitHub Copilot, OpenAI, Claude, Cursor, Grok und DeepSeek. Es liest den Ordner und git, nicht den Agent.

Provider Git-Änderungen
Claude Cloud Der Chat arbeitet auf einem Klon bei Anthropic, den dieses Fenster nicht sehen kann. Der Eintrag steht im Menü und liest den Arbeitsordner, den du in New Chat (Neuer Chat) auf dem Relay-Host gewählt hast (den, der Repository und Branch ausgefüllt hat), nicht die Änderungen der Sandbox. Die Ergebnisse des Agents kommen als Branches zurück, die er gepusht hat: Die Cloud-Zeile über dem Eingabebereich hat pro gepushtem Branch einen ⇡ branch-Link. Siehe Claude Cloud.