Alle Artikel

So sehen Sie den Git-Status im Dateimanager auf dem Mac

· 7 Min. Lesezeit

Sie sind im Ordner eines Projekts und wollen wissen, wie es darum steht: auf welchem Branch Sie sind, welche Dateien sich seit dem letzten Commit geändert haben, welche neuen Dateien Git noch nicht verfolgt. Der Finder sagt es Ihnen nicht. Der übliche Umweg führt über ein Terminal, ein cd und ein git status, oder über den Code-Editor.

Die kurze Antwort: Der Finder zeigt nichts von Git, außer Sie installieren eine App, die Dateien über eine Finder-Erweiterung mit Plaketten versieht. Im Terminal liefert git status -sb im Projektordner den Branch und eine Zeile pro Änderung. In Folia Files öffnen Sie das Projekt in einem Bereich: Der Branch erscheint in der Kopfzeile des Bereichs, und in den Darstellungen Liste, Detaillierte Liste und Baumstruktur bekommt jede geänderte Datei und jeder geänderte Ordner einen Buchstaben: M geändert, A hinzugefügt, R umbenannt, U unversioniert, ! in Konflikt.

Warum der Finder nichts zeigt

Ein Git-Repository ist ein gewöhnlicher Ordner mit einem versteckten Ordner .git darin. Mit ⇧⌘. zeigt der Finder diesen Ordner an, aber er liest ihn nicht: Keine Spalte, keine Plakette und kein Etikett sagt, dass sich eine Datei seit dem letzten Commit geändert hat, und nirgends steht der Branch.

macOS erlaubt anderen Apps durchaus, Plaketten auf Dateien in Finder-Fenstern zu zeichnen, über eine Finder-Sync-Erweiterung, und einige Git-Werkzeuge arbeiten so. Eine solche Erweiterung deckt aber nur die Ordner ab, die sie anmeldet, und zeigt nichts, bevor Sie sie in den Systemeinstellungen erlaubt haben.

Im Terminal: git status

Das Kurzformat

In einem Terminal im Projektordner beschreibt git status jede Änderung in ganzen Sätzen. Die Kurzform passt auf einen Bildschirm:

git status -sb

-s gibt eine Zeile pro Änderung aus, -b setzt den Branch darüber. Für das Projekt Atlas aus den Bildschirmfotos weiter unten lautet die Antwort:

## photo-pins...origin/photo-pins [ahead 2]
 M README.md
 M Sources/Atlas/MapView.swift
A  Sources/Atlas/PhotoPin.swift
R  Tests/AtlasTests.swift -> Tests/MapTests.swift
?? Notes/

Die erste Zeile nennt den Branch, den Remote-Branch, dem er folgt, und wie viele Commits Sie noch nicht gepusht (ahead) oder gepullt (behind) haben. Jede weitere Zeile beginnt mit zwei Spalten: die erste für das, was schon gestaged ist, also mit git add hinzugefügt, die zweite für das, was sich seitdem geändert hat. M heißt geändert, A hinzugefügt, R umbenannt, D gelöscht, ?? unversioniert, und UU ist ein Konflikt nach einem Merge.

Nur der Branch

git branch --show-current gibt nur den Namen des Branches aus. Viele Shell-Konfigurationen, etwa die Themes von Oh My Zsh oder der Starship-Prompt, setzen den Branch außerdem in den Prompt.

Eine Shell im richtigen Ordner ist die halbe Arbeit: So öffnen Sie das Terminal im aktuellen Ordner zeigt die Wege des Finders und die von Folia Files.

Im Code-Editor

Code-Editoren zeigen dieselbe Information in ihren eigenen Fenstern. VS Code setzt einen Buchstaben hinter jede geänderte Datei im Explorer und listet die Änderungen in der Ansicht Source Control (⌃⇧G); Xcode markiert geänderte Dateien im Project Navigator mit M oder A. Dazu müssen Sie das Projekt aber erst im Editor öffnen, und So öffnen Sie einen Ordner in VS Code, Cursor oder Xcode zeigt die kürzesten Wege.

Der Git-Status in den Bereichen von Folia Files

Folia Files liest den Status selbst und zeigt ihn dort, wo Sie navigieren, neben Ihren anderen Ordnern.

Das Projekt Atlas in der Darstellung Baumstruktur von Folia Files: README.md und MapView.swift mit M, PhotoPin.swift mit A, MapTests.swift mit R, der unversionierte Ordner Notes mit U, und der Branch photo-pins mit ↑2 und 5 Änderungen in der Kopfzeile des Bereichs

Der Branch in der Kopfzeile des Bereichs

Zeigt ein Bereich einen Ordner eines Git-Repositorys, dessen obersten Ordner oder irgendeinen darunter, erscheint in der Kopfzeile zwischen dem Pfad und den Tasten der Darstellungen eine kleine Kapsel: das Branch-Symbol und der Name des Branches, dann ↑2 für zwei Commits zum Pushen, ↓ mit einer Zahl für Commits zum Pullen, und ein orangefarbener Punkt mit der Zahl der Änderungen, etwa photo-pins ↑2 ● 5 (ein unversionierter Ordner zählt als eine). Sie bleibt in jeder der neun Darstellungen des Bereichs sichtbar. In einem schmalen Bereich macht sie als Erste Platz: Sie wandert in das Menü … der Kopfzeile, als Branch photo-pins.

Ein Buchstabe pro Änderung

In den Darstellungen Liste, Detaillierte Liste und Baumstruktur sowie in den Karten der Darstellung Zweige bekommt jede geänderte Datei am Ende ihrer Zeile einen farbigen Buchstaben:

  • M, orange: geändert.
  • A, grün: hinzugefügt, eine neue Datei, mit git add gestaged.
  • R, türkis: umbenannt.
  • U, grün: unversioniert, neu für Git. Ein unversionierter Ordner und alles darin bekommen das U.
  • !, rot: in Konflikt nach einem Merge.

Der Dateiname nimmt einen Hauch derselben Farbe an. Ein Ordner bekommt den Buchstaben der wichtigsten Änderung darin (zuerst ein Konflikt, dann eine hinzugefügte Datei, eine Umbenennung, eine Änderung, eine unversionierte Datei): In der Baumstruktur sagt Ihnen schon ein geschlossener Ordner, dass es darin etwas anzusehen gibt. Eine gelöschte Datei liegt nicht mehr im Ordner und kann keinen Buchstaben tragen: Der Ordner zeigt M, und das Menü des Branches nennt die Datei. Dateien, die .gitignore ausschließt, bekommen keinen Buchstaben, wie in git status.

Wo git status zwei Spalten hat, gibt es einen Buchstaben pro Datei: Ob eine Änderung schon gestaged ist, sagt Ihnen git status. Die Darstellungen Symbole, Spalten, Galerie und Mosaik zeigen den Branch in der Kopfzeile, ohne Buchstaben.

Das Menü des Branches

Klicken Sie auf die Kapsel, um ihr Menü zu öffnen: der Branch und der Remote-Branch, dem er folgt, die Commits zum Pushen und zum Pullen, dann die geänderten Dateien mit ihrem Buchstaben, nach ihrem Pfad ab dem obersten Ordner des Repositorys (höchstens 30, gelöschte ausgegraut). Wählen Sie eine aus, und der Bereich wechselt in ihren Ordner, die Datei ausgewählt. Darunter stehen Zum Stammverzeichnis des Repositorys, Branch-Namen kopieren und Aktualisieren.

Das Menü des Branches im Bereich Atlas von Folia Files: Branch photo-pins → origin/photo-pins, 2 Commits zum Pushen, die fünf Änderungen mit ihrem Buchstaben, dann Zum Stammverzeichnis des Repositorys, Branch-Namen kopieren und Aktualisieren

Nur lesend, und ohne zu stören

Folia Files führt nur git status aus, im Hintergrund. Es staged, committet und fetcht nie etwas und startet git status mit GIT_OPTIONAL_LOCKS=0. Die Dokumentation von Git beschreibt diese Variable für Werkzeuge, die im Hintergrund arbeiten: Ohne sie kann git status kurz die Sperre des Index nehmen, um ihn aufzufrischen, und ein git commit, den Sie genau dann eingeben, kann mit „Another git process seems to be running in this repository“ abbrechen.

Der Status wird neu gelesen, wenn sich Dateien im Ordner des Bereichs ändern, einen Moment nachdem Sie eine gesichert haben; Aktualisieren liest ihn jederzeit neu. Die Zahlen hinter ↑ und ↓ vergleichen Ihren Branch mit dem Remote-Branch, wie er bei Ihrem letzten git fetch oder git pull war: Folia Files kontaktiert das Remote-Repository nie.

Was Sie brauchen

  • Git auf dem Mac. Folia Files nutzt das bereits installierte git: das von Homebrew, oder das, das mit Xcode oder dessen Command Line Tools kommt. Auf einem Mac ohne beides zeigt es nichts und ruft nie das Angebot von macOS auf, die Entwicklerwerkzeuge zu installieren. xcode-select --install im Terminal installiert sie.
  • Die Einstellung. Einstellungen › Bereiche, Abschnitt Inhalt: Git-Status anzeigen (Branch und geänderte Dateien), von Anfang an eingeschaltet. Schalten Sie sie aus, um Branch und Buchstaben überall auszublenden.
  • Ein Ordner auf diesem Mac. Ordner auf einem Server oder einem Netzlaufwerk haben keinen Git-Status: Ein langsamer Server hält nie einen Bereich auf. Ein Repository ganz oben in Ihrem Benutzerordner, wie man es für Konfigurationsdateien („Dotfiles“) anlegt, wird übergangen, sonst bekäme jede Datei einen Buchstaben. Ein Repository, dessen git status länger als ein paar Sekunden dauert, zeigt nichts.

Gleich im selben Fenster weitermachen

Was Sie im Bereich sehen, verlangt oft nach einem Commit oder einem Blick auf ein Diff:

  • Im Editor öffnen, im Kontextmenü des Projektordners oder einer leeren Stelle seines Bereichs, listet die auf Ihrem Mac installierten Code-Editoren auf, VS Code, Cursor, Xcode und andere, und öffnet den Ordner im gewählten.
  • In der Website-Edition öffnet ⌥⌘T oder Darstellung › Terminal ein Terminal unter dem Bereich, in dessen Ordner; mit Bereich folgen folgt es dem Bereich von Ordner zu Ordner. Der fertige Befehl Git-Status im Untermenü Befehle des Kontextmenüs tippt git status in dieses Terminal. Die Seite zum integrierten Terminal zeigt den Rest.

Folia Files mit dem Projekt Atlas als detaillierte Liste, die Buchstaben neben Notes, Sources, Tests und README.md, und unter dem Bereich das integrierte Terminal mit git status -sb und denselben Änderungen

In der Mac App Store-Edition

Apples Sandbox erlaubt der App Store-Edition nicht, git selbst auszuführen. Dort kommt der Git-Status mit Folia Files Companion, der kostenlosen Hilfs-App dieser Edition, die git status für sie ausführt; ohne die Hilfs-App erscheinen weder der Branch noch die Buchstaben noch die Einstellung. Das integrierte Terminal und die Befehle gibt es nur in der Website-Edition; Im Editor öffnen gibt es in beiden.

Welcher Weg passt

  • Ein kurzer Blick ab und zu: git status -sb in einem Terminal im Projektordner.
  • Während Sie Code schreiben: die Ansicht Source Control Ihres Editors.
  • Während Sie Dateien durchsehen, sortieren und verschieben: der Branch in der Kopfzeile des Bereichs und die Buchstaben in der Liste, mit Editor und Terminal einen Klick entfernt.