Tutti gli articoli

Come vedere lo stato Git nel file manager su Mac

· 7 min di lettura

Stai guardando la cartella di un progetto e vuoi sapere a che punto è: su quale branch sei, quali file sono cambiati dall'ultimo commit, quali file nuovi Git non traccia ancora. Il Finder non te lo dice, quindi la solita deviazione passa da un terminale, un cd e un git status, o dal tuo editor di codice.

La risposta breve: il Finder non mostra niente di Git, a meno che tu non aggiunga un'app che mette dei badge sui file tramite un'estensione del Finder. Nel Terminale, git status -sb nella cartella del progetto dà il branch e una riga per ogni modifica. In Folia Files, apri il progetto in un riquadro: il branch compare nell'intestazione del riquadro e, nelle viste Elenco, Elenco dettagliato e Albero, ogni file e cartella modificati ricevono una lettera: M modificato, A aggiunto, R rinominato, U non tracciato, ! in conflitto.

Perché il Finder non mostra niente

Un repository Git è una cartella normale con dentro una cartella nascosta .git. ⇧⌘. la fa apparire nel Finder, ma il Finder non la legge: nessuna colonna, badge o etichetta dice che un file è cambiato dall'ultimo commit, e niente mostra il branch.

macOS permette sì ad altre app di disegnare badge sui file nelle finestre del Finder, tramite un'estensione Finder Sync, e alcuni strumenti per Git funzionano così. Un'estensione del genere copre solo le cartelle che registra, e non mostra niente finché non la consenti nelle Impostazioni di Sistema.

Nel Terminale: git status

Il formato breve

In un terminale aperto nella cartella del progetto, git status descrive ogni modifica con frasi complete. La sua forma breve sta in una schermata:

git status -sb

-s dà una riga per modifica, -b aggiunge il branch in cima. Per il progetto Atlas delle schermate più sotto, risponde:

## 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/

La prima riga indica il branch, il branch remoto che segue e quanti commit non hai ancora inviato (ahead) o scaricato (behind). Ogni riga successiva inizia con due colonne: la prima per ciò che è già nell'area di staging, aggiunto con git add, la seconda per ciò che è cambiato dopo. M significa modificato, A aggiunto, R rinominato, D eliminato, ?? non tracciato, e UU un conflitto lasciato da un merge.

Solo il branch

git branch --show-current stampa solo il nome del branch. Molte configurazioni della shell, come i temi di Oh My Zsh o il prompt Starship, mettono il branch anche nel prompt.

Avere una shell nella cartella giusta è metà del lavoro: come aprire il Terminale nella cartella corrente spiega i modi del Finder e quelli di Folia Files.

Nel tuo editor di codice

Gli editor di codice mostrano la stessa informazione nelle loro finestre. VS Code mette una lettera dopo ogni file modificato nel suo Explorer ed elenca le modifiche nella vista Source Control (⌃⇧G); Xcode segna i file modificati con una M o una A nel suo Project navigator. Bisogna però aprire prima il progetto nell'editor, e come aprire una cartella in VS Code, Cursor o Xcode mostra i modi più rapidi.

Lo stato Git nei riquadri di Folia Files

Folia Files legge lo stato da sé e lo mostra dove navighi, accanto alle tue altre cartelle.

Il progetto Atlas nella vista Albero di Folia Files: README.md e MapView.swift segnati M, PhotoPin.swift A, MapTests.swift R, la cartella non tracciata Notes U, e il branch photo-pins con ↑2 e 5 modifiche nell'intestazione del riquadro

Il branch, nell'intestazione del riquadro

Quando un riquadro mostra una cartella di un repository Git, la sua cartella principale o una qualsiasi più in basso, l'intestazione mostra una piccola capsula tra il percorso e i pulsanti delle viste: l'icona del branch e il suo nome, poi ↑2 per due commit da inviare, ↓ seguito da un numero per i commit da scaricare, e un punto arancione con il numero di modifiche, come in photo-pins ↑2 ● 5 (una cartella non tracciata conta come una). Resta lì in ognuna delle nove viste del riquadro. In un riquadro stretto è la prima a fare spazio: passa nel menu … dell'intestazione, come Branch photo-pins.

Una lettera su ogni modifica

Nelle viste Elenco, Elenco dettagliato e Albero, e nelle schede della vista Rami, ogni file modificato riceve una lettera colorata in fondo alla sua riga:

  • M, arancione: modificato.
  • A, verde: aggiunto, un file nuovo messo in staging con git add.
  • R, turchese: rinominato.
  • U, verde: non tracciato, nuovo per Git. Una cartella non tracciata e tutto ciò che contiene ricevono la U.
  • !, rosso: in conflitto dopo un merge.

Il nome del file prende una sfumatura dello stesso colore. Una cartella riceve la lettera della modifica più importante che contiene (prima un conflitto, poi un file aggiunto, un cambio di nome, una modifica, un file non tracciato): nella vista Albero una cartella chiusa ti dice già che c'è qualcosa da guardare. Un file eliminato non è più nella sua cartella per portare una lettera: la cartella mostra M e il menu del branch elenca il file. I file esclusi da .gitignore non ricevono lettere, come in git status.

C'è una lettera per file dove git status ha due colonne: se una modifica è già in staging te lo dice git status. Le viste Icone, Colonne, Galleria e Mosaico mostrano il branch nell'intestazione, senza lettere.

Il menu del branch

Fai clic sulla capsula per aprirne il menu: il branch e il branch remoto che segue, i commit da inviare e da scaricare, poi i file modificati con la loro lettera, per percorso dalla radice del repository (al massimo 30, quelli eliminati in grigio). Scegline uno e il riquadro va nella sua cartella con il file selezionato. In fondo ci sono Vai alla radice del repository, Copia nome del ramo e Aggiorna.

Il menu del branch del riquadro Atlas in Folia Files: Branch photo-pins → origin/photo-pins, 2 commit da inviare, le cinque modifiche con la loro lettera, poi Vai alla radice del repository, Copia nome del ramo e Aggiorna

Solo lettura, e senza intralci

Folia Files esegue solo git status, in background. Non mette mai niente in staging, non fa commit né fetch, ed esegue git status con GIT_OPTIONAL_LOCKS=0. La documentazione di Git descrive questa variabile per gli strumenti che lavorano in background: senza di essa, git status può prendere per un attimo il blocco dell'indice del repository per aggiornarlo, e un git commit digitato proprio in quel momento può fermarsi con «Another git process seems to be running in this repository».

Lo stato viene riletto quando cambiano dei file nella cartella del riquadro, un attimo dopo che ne hai salvato uno; Aggiorna lo rilegge quando vuoi. I numeri di ↑ e ↓ confrontano il tuo branch con il branch remoto com'era al tuo ultimo git fetch o git pull: Folia Files non contatta mai il repository remoto.

Cosa serve

  • Git sul Mac. Folia Files usa il git già installato: quello di Homebrew, o quello che arriva con Xcode o con i suoi strumenti da riga di comando (Command Line Tools). Su un Mac senza nessuno dei due non mostra niente, e non fa mai comparire la proposta di macOS di installare gli strumenti per sviluppatori. xcode-select --install nel Terminale li installa.
  • L'impostazione. Impostazioni › Riquadri, sezione Contenuto: Mostra lo stato Git (ramo e file modificati), attiva fin dall'inizio. Disattivala per nascondere branch e lettere ovunque.
  • Una cartella di questo Mac. Le cartelle di un server o di un disco di rete non hanno stato Git: un server lento non blocca mai un riquadro. Un repository alla radice della tua cartella Inizio, del tipo che tiene i file di configurazione («dotfiles»), viene ignorato, altrimenti ogni file avrebbe una lettera. Un repository il cui git status richiede più di qualche secondo non mostra niente.

Agire dalla stessa finestra

Quello che vedi nel riquadro spesso chiede un commit o un'occhiata a un diff:

  • Apri nell'editor, nel menu contestuale della cartella del progetto o di un punto vuoto del suo riquadro, elenca gli editor di codice installati sul Mac, VS Code, Cursor, Xcode e altri, e apre la cartella in quello che scegli.
  • Nell'edizione del sito, ⌥⌘T o Vista › Terminal apre un terminale sotto il riquadro, nella sua cartella; con Segui il riquadro selezionato, segue il riquadro di cartella in cartella. Il comando già pronto Stato Git, nel sottomenu Comandi del menu contestuale, digita git status in quel terminale. La pagina del terminale integrato mostra il resto.

Folia Files con il progetto Atlas in un elenco dettagliato, le lettere accanto a Notes, Sources, Tests e README.md, e sotto il riquadro il terminale integrato che mostra git status -sb con le stesse modifiche

Nell'edizione del Mac App Store

La sandbox di Apple non lascia che l'edizione dell'App Store esegua git da sé. Lì lo stato Git arriva con Folia Files Companion, l'app di supporto gratuita di quell'edizione, che esegue git status al suo posto; senza Companion non compaiono né il branch, né le lettere, né l'impostazione. Il terminale integrato e i comandi ci sono solo nell'edizione del sito; Apri nell'editor c'è in entrambe.

Quale strada scegliere

  • Un controllo ogni tanto: git status -sb in un terminale aperto nel progetto.
  • Mentre scrivi codice: la vista Source Control del tuo editor.
  • Mentre sfogli, ordini e sposti file: il branch nell'intestazione del riquadro e le lettere nell'elenco, con editor e terminale a un clic.