A native macOS app that scans a folder of local projects and compares every local branch with the corresponding branch on GitHub.
- Local ahead — the local branch contains commits not on GitHub.
- In sync — both references point to the same commit.
- Remote ahead — GitHub contains commits not in the local branch.
- Diverged — both sides contain unique commits and require a merge or rebase.
Branches that exist on only one side are included as local-ahead or remote-ahead and clearly labeled as local-only or remote-only.
- Choose a folder containing project folders.
- The app recursively checks every visible subfolder for a
.gitdirectory. - Before scanning, it qualifies repositories with a
github.comremote, preferringorigin, and reports how many it found. - It runs
git fetch --prunefor that remote. - It compares local and remote branch commit graphs with
git rev-list --left-right --count.
If fetching fails, the app displays a warning and uses the cached remote references already present in the repository.
The app target explicitly sets ENABLE_APP_SANDBOX = NO.
Open GitBranchStatus.xcodeproj in Xcode, or run:
xcodebuild \
-project GitBranchStatus.xcodeproj \
-scheme GitBranchStatus \
-configuration Debug \
-derivedDataPath build \
CODE_SIGNING_ALLOWED=NO \
buildThe built app will be at:
build/Build/Products/Debug/GitBranchStatus.app
Run tests with:
xcodebuild \
-project GitBranchStatus.xcodeproj \
-scheme GitBranchStatus \
-derivedDataPath build \
CODE_SIGNING_ALLOWED=NO \
test