Todos os artigos

Como ver o status do Git no gerenciador de arquivos do Mac

· 8 min de leitura

Você está na pasta de um projeto e quer saber como ele está: em qual branch você está, quais arquivos mudaram desde o último commit, quais arquivos novos o Git ainda não rastreia. O Finder não vai contar, então o desvio de sempre passa por um terminal, um cd e um git status, ou pelo seu editor de código.

A resposta curta: o Finder não mostra nada do Git, a não ser que você instale um app que coloque selos nos arquivos por meio de uma extensão do Finder. No Terminal, git status -sb na pasta do projeto mostra o branch e uma linha por alteração. No Folia Files, abra o projeto em um painel: o branch aparece no cabeçalho do painel e, nas visualizações Lista, Lista Detalhada e Árvore, cada arquivo e pasta alterados recebem uma letra: M modificado, A adicionado, R renomeado, U não rastreado, ! em conflito.

Por que o Finder não mostra nada

Um repositório Git é uma pasta comum com uma pasta oculta .git dentro. ⇧⌘. faz o Finder mostrá-la, mas o Finder não a lê: nenhuma coluna, selo ou etiqueta diz que um arquivo mudou desde o último commit, e nada mostra o branch.

O macOS permite, sim, que outros apps desenhem selos nos arquivos das janelas do Finder, por meio de uma extensão Finder Sync, e algumas ferramentas de Git funcionam assim. Uma extensão desse tipo só cobre as pastas que ela registra, e não mostra nada até você permiti-la nos Ajustes do Sistema.

No Terminal: git status

O formato curto

Em um terminal aberto na pasta do projeto, git status descreve cada alteração em frases completas. A forma curta cabe em uma tela:

git status -sb

-s dá uma linha por alteração e -b acrescenta o branch no topo. Para o projeto Atlas das capturas mais abaixo, a resposta é:

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

A primeira linha diz o branch, o branch remoto que ele segue e quantos commits você ainda não enviou (ahead) ou não recebeu (behind). Cada linha seguinte começa com duas colunas: a primeira para o que já está no stage, adicionado com git add, e a segunda para o que mudou depois. M quer dizer modificado, A adicionado, R renomeado, D apagado, ?? não rastreado, e UU um conflito deixado por um merge.

Só o branch

git branch --show-current mostra apenas o nome do branch. Muitas configurações do shell, como os temas do Oh My Zsh ou o prompt Starship, também colocam o branch no prompt.

Ter um shell na pasta certa é metade do trabalho: como abrir o Terminal na pasta atual mostra os jeitos do Finder e os do Folia Files.

No seu editor de código

Os editores de código mostram a mesma informação nas próprias janelas. O VS Code coloca uma letra depois de cada arquivo modificado no Explorer e lista as alterações na visualização Source Control (⌃⇧G); o Xcode marca os arquivos modificados com um M ou um A no Project navigator. Para isso é preciso abrir antes o projeto no editor, e como abrir uma pasta no VS Code, Cursor ou Xcode mostra os jeitos mais curtos.

O status do Git nos painéis do Folia Files

O Folia Files lê o status sozinho e o mostra onde você navega, ao lado das suas outras pastas.

O projeto Atlas na visualização Árvore do Folia Files: README.md e MapView.swift marcados com M, PhotoPin.swift com A, MapTests.swift com R, a pasta não rastreada Notes com U, e o branch photo-pins com ↑2 e 5 alterações no cabeçalho do painel

O branch, no cabeçalho do painel

Quando um painel mostra uma pasta de um repositório Git, a pasta raiz ou qualquer outra mais abaixo, o cabeçalho mostra uma pequena cápsula entre o caminho e os botões das visualizações: o ícone de branch e o nome do branch, depois ↑2 para dois commits a enviar, ↓ seguido de um número para os commits a receber, e um ponto laranja com o número de alterações, como em photo-pins ↑2 ● 5 (uma pasta não rastreada conta como uma). Ela fica ali em cada uma das nove visualizações do painel. Em um painel estreito, é a primeira a ceder espaço: passa para o menu … do cabeçalho, como Branch photo-pins.

Uma letra em cada alteração

Nas visualizações Lista, Lista Detalhada e Árvore, e nos cartões da visualização Ramos, cada arquivo alterado recebe uma letra colorida no fim da linha:

  • M, laranja: modificado.
  • A, verde: adicionado, um arquivo novo colocado no stage com git add.
  • R, turquesa: renomeado.
  • U, verde: não rastreado, novo para o Git. Uma pasta não rastreada e tudo o que ela contém recebem o U.
  • !, vermelho: em conflito depois de um merge.

O nome do arquivo ganha um toque da mesma cor. Uma pasta recebe a letra da alteração mais importante que contém (primeiro um conflito, depois um arquivo adicionado, uma mudança de nome, uma modificação, um arquivo não rastreado), então, na visualização Árvore, uma pasta fechada já avisa que há algo para olhar. Um arquivo apagado não está mais na pasta para levar uma letra: a pasta mostra M e o menu do branch lista o arquivo. Os arquivos que o .gitignore exclui não recebem letra, como no git status.

Há uma letra por arquivo onde o git status tem duas colunas: se uma alteração já está no stage, quem diz é o git status. As visualizações Ícones, Colunas, Galeria e Mosaico mostram o branch no cabeçalho, sem as letras.

O menu do branch

Clique na cápsula para abrir o menu: o branch e o branch remoto que ele segue, os commits a enviar e a receber, e depois os arquivos alterados com a letra de cada um, pelo caminho a partir da raiz do repositório (no máximo 30, os apagados esmaecidos). Escolha um, e o painel vai para a pasta dele com o arquivo selecionado. Embaixo ficam Ir para a Raiz do Repositório, Copiar Nome do Branch e Atualizar.

O menu do branch do painel Atlas no Folia Files: Branch photo-pins → origin/photo-pins, 2 commits a enviar, as cinco alterações com a letra de cada uma, e então Ir para a Raiz do Repositório, Copiar Nome do Branch e Atualizar

Só leitura, e sem atrapalhar

O Folia Files só executa git status, em segundo plano. Ele nunca coloca nada no stage, nunca faz commit nem fetch, e executa git status com GIT_OPTIONAL_LOCKS=0. A documentação do Git descreve essa variável para ferramentas que trabalham em segundo plano: sem ela, o git status pode pegar por um instante o bloqueio do índice do repositório para atualizá-lo, e um git commit digitado bem nessa hora pode parar com “Another git process seems to be running in this repository”.

O status é lido de novo quando arquivos mudam na pasta do painel, um instante depois de você salvar um; Atualizar o lê de novo a qualquer momento. Os números de ↑ e ↓ comparam o seu branch com o branch remoto como ele estava no seu último git fetch ou git pull: o Folia Files nunca contata o repositório remoto.

O que é preciso

  • Git no Mac. O Folia Files usa o git já instalado: o do Homebrew, ou o que vem com o Xcode ou com as ferramentas de linha de comando dele (Command Line Tools). Em um Mac sem nenhum dos dois, ele não mostra nada e nunca faz aparecer a oferta do macOS para instalar as ferramentas de desenvolvedor. xcode-select --install no Terminal as instala.
  • O ajuste. Ajustes › Painéis, seção Conteúdo: Mostrar estado do Git (branch e arquivos modificados), ativado desde o início. Desative-o para esconder o branch e as letras em todo lugar.
  • Uma pasta deste Mac. Pastas de um servidor ou de um disco de rede não têm status do Git: um servidor lento nunca segura um painel. Um repositório na raiz da sua pasta pessoal, do tipo que guarda os arquivos de configuração (“dotfiles”), é ignorado; senão, cada arquivo receberia uma letra. Um repositório cujo git status leva mais do que alguns segundos não mostra nada.

Agir na mesma janela

O que você vê no painel muitas vezes pede um commit ou uma olhada em um diff:

  • Abrir no Editor, no menu de contexto da pasta do projeto ou de um ponto vazio do painel, lista os editores de código instalados no seu Mac, VS Code, Cursor, Xcode e outros, e abre a pasta no que você escolher.
  • Na edição do site, ⌥⌘T ou Visualizar › Terminal abre um terminal embaixo do painel, na pasta dele; com Seguir Painel marcado, ele acompanha o painel de pasta em pasta. O comando pronto Status do Git, no submenu Comandos do menu de contexto, digita git status nesse terminal. A página do terminal integrado mostra o resto.

O Folia Files com o projeto Atlas em lista detalhada, as letras ao lado de Notes, Sources, Tests e README.md, e embaixo do painel o terminal integrado mostrando git status -sb com as mesmas alterações

Na edição da Mac App Store

A sandbox da Apple não deixa a edição da App Store executar o git sozinha. Nela, o status do Git vem com o Folia Files Companion, o app auxiliar gratuito dessa edição, que executa o git status por ela; sem o Companion, não aparecem nem o branch, nem as letras, nem o ajuste. O terminal integrado e os comandos existem só na edição do site; Abrir no Editor está nas duas.

Qual caminho escolher

  • Uma olhada de vez em quando: git status -sb em um terminal aberto no projeto.
  • Enquanto você escreve código: a visualização Source Control do seu editor.
  • Enquanto você navega, organiza e move arquivos: o branch no cabeçalho do painel e as letras na lista, com o editor e o terminal a um clique.