All articles

How to See Git Status in Your File Manager on a Mac

· 7 min read

You are browsing a project folder and want to know where it stands: which branch you are on, which files changed since the last commit, which new files Git doesn't track yet. The Finder can't tell you, so the usual detour is a terminal, a cd and git status, or a switch to your code editor.

The short answer: the Finder shows nothing about Git, unless you add an app that badges files through a Finder extension. In Terminal, git status -sb in the project folder gives the branch and one line per change. In Folia Files, open the project in a pane: the branch appears in the pane's header, and in the List, Detailed List and Tree views each changed file and folder gets a letter: M modified, A added, R renamed, U untracked, ! in conflict.

Why the Finder shows nothing

A Git repository is an ordinary folder with a hidden .git folder inside. ⇧⌘. shows that folder in the Finder, but the Finder doesn't read it: no column, badge or label says that a file changed since the last commit, and nothing shows the branch.

macOS does let other apps draw badges on files in Finder windows, through a Finder Sync extension, and a few Git tools work that way. Such an extension only covers the folders it registers, and shows nothing until you allow it in System Settings.

In Terminal: git status

The short format

In a terminal open in the project folder, git status describes every change in full sentences. Its short form fits on a screen:

git status -sb

-s gives one line per change, -b adds the branch on top. For the Atlas project in the screenshots below, it answers:

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

The first line names the branch, the remote branch it follows, and how many commits you haven't pushed (ahead) or pulled (behind). Each line after it starts with two columns: the first for what is staged, already added with git add, the second for what changed since. M means modified, A added, R renamed, D deleted, ?? untracked, and UU a conflict left by a merge.

Just the branch

git branch --show-current prints the branch name alone. Many shell setups, such as the Oh My Zsh themes or the Starship prompt, also put the branch in the prompt.

A shell in the right folder is half the job: how to open Terminal in the current folder covers the Finder's ways and Folia Files'.

In your code editor

Code editors show the same information in their own windows. VS Code puts a letter after each changed file in its Explorer and lists the changes in its Source Control view (⌃⇧G); Xcode marks changed files with an M or an A in its Project navigator. That means opening the project in the editor first, and how to open a folder in VS Code, Cursor or Xcode shows the shortest ways.

Git status in Folia Files' panes

Folia Files reads the status itself and shows it where you browse, next to your other folders.

The Atlas project in the Tree view of Folia Files: README.md and MapView.swift marked M, PhotoPin.swift A, MapTests.swift R, the untracked Notes folder U, and the branch photo-pins with ↑2 and 5 changes in the pane header

The branch, in the pane header

When a pane shows a folder inside a Git repository, its top folder or anywhere deeper, the header shows a small capsule between the path and the view buttons: the branch icon and the branch name, then ↑2 for two commits to push, ↓ followed by a number for commits to pull, and an orange dot with the number of changes, as in photo-pins ↑2 ● 5 (an untracked folder counts as one). It stays there in every one of the pane's nine views. In a narrow pane, it is the first to make room: it moves into the header's … menu, as Branch photo-pins.

A letter on each change

In the List, Detailed List and Tree views, and in the cards of the Branches view, each changed file gets a colored letter at the end of its row:

  • M, orange: modified.
  • A, green: added, a new file staged with git add.
  • R, teal: renamed.
  • U, green: untracked, new to Git. An untracked folder and everything in it get the U.
  • !, red: in conflict after a merge.

The file's name takes a hint of the same color. A folder gets the letter of the most important change inside it (a conflict first, then an addition, a rename, a modification, an untracked file), so in the Tree view a closed folder already tells you there is something to look at. A deleted file is no longer in its folder to carry a letter: the folder shows M, and the branch menu lists the file. Files excluded by .gitignore get no letter, as in git status.

There is one letter per file where git status has two columns: whether a change is already staged is for git status to tell. The Icons, Columns, Gallery and Mosaic views show the branch in the header, without letters.

The branch menu

Click the capsule to open its menu: the branch and the remote branch it follows, the commits to push and to pull, then the changed files with their letter, by path from the top of the repository (30 at most, deleted ones grayed out). Choose one, and the pane goes to its folder with the file selected. At the bottom are Go to Repository Root, Copy Branch Name and Refresh.

The branch menu of the Atlas pane in Folia Files: Branch photo-pins → origin/photo-pins, 2 commits to push, the five changes with their letter, then Go to Repository Root, Copy Branch Name and Refresh

Read-only, and out of your way

Folia Files only runs git status, in the background. It never stages, commits or fetches anything, and runs git status with GIT_OPTIONAL_LOCKS=0. Git's documentation describes that variable for tools working in the background: without it, git status can briefly take the repository's index lock to refresh the index, and a git commit typed at that moment can stop with “Another git process seems to be running in this repository”.

The status is read again when files change in the pane's folder, a moment after you save one; Refresh reads it at any time. The ↑ and ↓ counts compare your branch with the remote branch as of your last git fetch or git pull: Folia Files never contacts the remote.

What it needs

  • Git on the Mac. Folia Files uses the git already installed: Homebrew's, or the one that comes with Xcode or its Command Line Tools. On a Mac with none of them, it shows nothing, and never brings up the macOS offer to install the developer tools. xcode-select --install in Terminal installs them.
  • The setting. Settings › Panes, section Contents: Show Git status (branch and modified files), on from the start. Turn it off to hide the branch and the letters everywhere.
  • A folder on this Mac. Folders on a server or a network drive get no Git status, so a slow server never holds up a pane. A repository at the top of your home folder, the kind that keeps dotfiles, is ignored, or every file would get a letter. A repository whose git status takes more than a few seconds shows nothing.

Act on it from the same window

What you see in the pane often calls for a commit or a look at a diff:

  • Open in Editor, in the right-click menu of the project folder or of an empty spot of its pane, lists the code editors installed on your Mac, VS Code, Cursor, Xcode and others, and opens the folder in the one you choose.
  • In the website edition, ⌥⌘T or View › Terminal opens a terminal under the pane, in its folder; with Follow Pane ticked, it follows the pane from folder to folder. The ready-made Git Status command, in the Commands submenu of the right-click menu, types git status into that terminal. The built-in terminal page shows the rest.

Folia Files with the Atlas project in a Detailed List, its letters next to Notes, Sources, Tests and README.md, and under the pane the built-in terminal showing git status -sb with the same changes

In the Mac App Store edition

Apple's sandbox doesn't let the App Store edition run git itself. There, Git status comes with Folia Files Companion, the free helper app of that edition, which runs git status for it; without the companion, neither the branch, the letters nor the setting appear. The built-in terminal and the commands are in the website edition only; Open in Editor is in both.

Which way to choose

  • A quick check now and then: git status -sb in a terminal open in the project.
  • While you write code: your editor's Source Control view.
  • While you browse, sort and move files: the branch in the pane header and the letters in the list, with the editor and the terminal one click away.