FinderGit 0.24.0
FinderGit 0.24.0 — forks that had drifted, and filenames that had been unreachable
Highlights
Update a fork from upstream — including one that has diverged. A fork that carries its own commits and is missing upstream commits can't be fast-forwarded, on GitHub or anywhere else. Until now FinderGit said so and stopped there, leaving you to finish the job in a terminal. It now offers an Update menu on the fork's Overview banner that does it: it sets up the connection to the original repository the first time, fetches it, and integrates the parent's default branch.
Merge or rebase, and you choose which. Merge keeps your commits where they are and records a merge commit; rebase replays them on top for a linear history. Both are offered every time rather than quietly following your Pull preference, so a one-off choice here doesn't change your default.
It stops before pushing, on purpose. After a rebase your history has been rewritten, so the next push needs a force — that's your call, not something to do on your behalf. FinderGit tells you which case you're in when it finishes.
It won't repoint a remote you configured. If your clone already has an upstream and it points somewhere other than the fork's parent, FinderGit stops and names both, rather than quietly pulling commits from a repository you didn't mean.
The one-click Sync is still there for a fork that's merely behind — it also updates the fork on GitHub itself — and now sits on a split button, so the local route is available even when you have no token, or one that can't push to the fork.
Bug fixes
Files with accents or non-Latin characters in their names could not be staged, unstaged or discarded. Any path containing a character outside plain ASCII — café.txt, Cyrillic, CJK, an emoji in a filename — came back from Git in an escaped form that FinderGit passed straight back without unescaping, so the action silently applied to a file that didn't exist. If you keep repositories with non-English filenames, those three actions now work.
Under the hood
- Status is read with
git status --porcelain=v2 -z, so paths arrive verbatim as NUL-terminated records instead of C-quoted strings.core.quotePathdefaults to true, which is why every non-ASCII name was affected rather than an unlucky few. - Output that isn't valid UTF-8 is now refused rather than lossily decoded. The replacement character is neither reversible nor injective, so two different filenames can decode to the same string — acting on one could have staged or discarded the other.
- The upstream URL is derived by substituting the owner/repo pair inside your existing
originURL rather than composing a fresh HTTPS one, which preserves the transport, host, port and path prefix you already use. An SSH clone stays SSH; a self-hosted forge keeps working. - The checked-out-branch check runs again immediately before the merge or rebase, not just before the network fetch that precedes it, narrowing the window in which a checkout elsewhere could land the integration on the wrong branch.
- The test suite now runs green from a clean checkout. It had been failing on around 14 tests for a long time — a shared mock raced by parallel execution, plus assertions comparing against localized strings — which meant "did this change break anything" had no answer.
Install
Download the DMG below, drag FinderGit to Applications, and launch it. The app is signed with a Developer ID and notarized by Apple, so no Gatekeeper bypass is needed. Existing installations update themselves.
Requirements
macOS 15 or later. Universal binary (Apple Silicon and Intel).
Verify this download
Compare the checksum of the file you downloaded:
shasum -a 256 FinderGit-0.24.0.dmg
It must print exactly:
0011c6c955baf03124c30c10fea1cccf253bc7e2f027592625af7799817afadd
The DMG is also signed with an Apple Developer ID and notarized by Apple, which you can confirm without installing it:
spctl -a -vv -t open --context context:primary-signature FinderGit-0.24.0.dmg
That reports source=Notarized Developer ID for a genuine build.