git push fatal no configured push destination
Master System Design with Codemia
Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.
Introduction
The error fatal: No configured push destination means Git does not know where the current branch should be pushed. Usually that happens because the repository has no remote yet, or the branch exists locally but does not track a branch on any remote.
The fix is normally small: add or verify the remote, then set an upstream branch. After that, plain git push and git pull work the way most developers expect.
What Git Needs for Plain git push
For a simple git push with no extra arguments, Git needs two pieces of information:
- The remote repository, often named
origin - The remote branch that the current local branch should track
If either is missing, Git cannot infer a safe destination.
Start with these diagnostics:
git remote -v shows whether a remote exists at all. git branch -vv shows whether the current branch already tracks something like origin/main.
Case 1: No Remote Exists
If git remote -v prints nothing, add a remote first.
For a feature branch, the same pattern applies.
The -u flag sets the upstream, which is the missing piece that lets future git push calls work without extra arguments.
Case 2: Remote Exists but Branch Has No Upstream
If the remote is already there but the current branch is untracked, the quickest fix is:
Using HEAD is convenient because it means “the branch I am on right now” without hardcoding the branch name.
You can also set tracking explicitly:
That is useful when the remote branch already exists and you just need the local branch to point at it.
Multi-Remote Repositories
Some repositories have both origin and upstream, or separate remotes for personal forks and shared repos. In those cases, Git may need more explicit direction.
You can also define branch-specific settings:
That avoids accidental pushes to the wrong remote in more complex workflows.
Useful Defaults
If your team wants simpler behavior for new branches, a few config values can help.
These settings tell Git to prefer pushing the current branch to origin by default when that choice makes sense. They do not replace upstream tracking entirely, but they reduce friction in common cases.
New Repository Bootstrap Example
A clean first-push flow looks like this:
If you always follow that pattern on new projects, this error becomes rare.
Common Pitfalls
A common mistake is creating a new local branch and immediately running git push without -u. Git can push it, but only if you tell it which remote branch to create and track.
Another issue is assuming origin always exists. Some repositories are cloned from unusual sources, initialized locally, or renamed in ways that break that assumption.
Developers also sometimes try to solve this with force push, which is unrelated. The problem is not rejected history; it is missing destination configuration.
Finally, after a default-branch rename from master to main, local tracking information may still point at the old branch name. In that case, update the upstream reference explicitly.
Summary
- This error means Git has no clear remote destination for the current branch.
- Check remotes with
git remote -vand tracking withgit branch -vv. - If needed, add a remote and run
git push -u origin HEAD. - Multi-remote repositories may require explicit branch-to-remote configuration.
- Standardizing initial setup steps prevents this problem in most workflows.

