Git Developer Guide
Git ahead and behind remote: what it means and how to fix it
The 3 States of Remote Tracking
1. Ahead (e.g. "ahead by 2 commits")
You made commits locally that have not yet been pushed to GitHub or GitLab. Fix: git push.
2. Behind (e.g. "behind by 3 commits")
Teammates or CI pushed new commits to the remote repository that you don't have yet. Fix: git pull --rebase.
3. Diverged (e.g. "ahead 1, behind 2")
Both you and the remote have commits that the other lacks. Fix: git pull --rebase origin <branch> to rebase your local commits onto the latest remote tip.
Inspecting the Commits
To see which commits are ahead vs behind before pushing or pulling, list the commits you have that the remote lacks (ahead):
git log @{u}..HEAD --oneline
And the commits the remote has that you lack (behind):
git log HEAD..@{u} --oneline
How GitMon keeps you updated
GitMon computes ahead (↑) and behind (↓) counts natively for every repository and branch. You always know whether you need to push or pull with a single glance at your macOS menu bar.
Related Guides
- Check unpushed commits across all repos on Mac
- Git detached HEAD: what it means and how to fix
- Git pull or fetch every repo in a folder at once
- Git says "Your branch is up to date" but the remote has new commits
- Git push says "Everything up-to-date" but your branch is ahead
- Remote branch deleted but still shows locally
- fatal: Need to specify how to reconcile divergent branches
- fatal: The current branch has no upstream branch