Select Page

How to Fix “Push Rejected Non-Fast Forward” in Git: A Step-by-Step Guide

by | Aug 4, 2023

When encountering the error “Push Rejected: Non-Fast Forward” in Git, it signifies that the remote repository has changes that you haven’t incorporated into your local repository. This rejection occurs as a precautionary measure to prevent accidental overwrites of others’ work or the loss of changes made on the remote repository.

In Git, a “fast-forward” push means that your local branch can be smoothly integrated into the remote branch without conflicts. However, when your local branch diverges from the remote branch due to additional commits on the remote, Git prevents a “non-fast-forward” push to safeguard against unintended data loss.

Understanding the concept of fast-forward pushes and the rationale behind preventing non-fast-forward pushes is crucial. This rejection ensures collaboration integrity, allowing developers to review changes and resolve conflicts before updating the remote repository.

In the following step-by-step guide, we’ll navigate through the process of resolving the “Push Rejected: Non-Fast Forward” error, empowering you to synchronize your local and remote repositories seamlessly.

Understanding the “Push Rejected (Non-Fast Forward)” Error:

When you encounter the Push Rejected (Non-Fast Forward) error, it means that you’re trying to push changes to a branch in a remote repository, but your local branch isn’t up to date with the remote branch. In other words, someone else has pushed changes to the remote branch after your last pull, and Git is preventing you from overwriting those changes.

Step 1: Ensure You’re on the Correct Branch:

First things first, double-check that you’re working on the correct branch. Run the command:

git branch

Ensure that you’re on the branch you intend to push changes to. If not, switch to the correct branch using:

git checkout <branch_name>

Step 2: Pull the Latest Changes:

To bring your local branch up to date with the remote branch, pull the latest changes:

git pull origin <branch_name>

This command fetches the latest changes from the remote repository and automatically merges them into your local branch.

Step 3: Resolve Any Conflicts:

If Git detects conflicts between your changes and the incoming changes from the remote branch, you’ll need to resolve these conflicts. Open the files with conflicts, resolve the conflicting sections, save the files, and then commit the changes.

Step 4: Push Your Changes:

Now that your local branch is up to date and any conflicts are resolved, you can push your changes to the remote repository:

git push origin <branch_name>

In most cases, your push should now go through without any issues. However, if someone else has pushed additional changes after your last pull, you might encounter the same error again.

Step 5: Repeat if Necessary:

If you encounter the “Push Rejected Non-Fast Forward” error again after following the previous steps, it means that someone else has pushed changes since your last pull.

Simply repeat Steps 2 to 4 to pull the latest changes, resolve conflicts if any, and push your changes again.

Troubleshooting: Common Challenges and Variations

While resolving the “Push Rejected: Non-Fast Forward” error in Git, you may encounter specific challenges or variations based on your workflow or repository setup. Here are some troubleshooting steps to address potential issues:

  1. Uncommitted Changes:
    • Challenge: Attempting to push changes while having uncommitted changes locally.
    • Solution: Ensure all changes are committed using git commit -m "Your commit message" before attempting to push.
  2. Branch Divergence:
    • Challenge: The local branch has diverged significantly from the remote branch.
    • Solution: Consider fetching the latest changes from the remote using git fetch and then either merge (git merge) or rebase (git rebase) your changes on top of the remote branch.
  3. Branch Protection Rules:
    • Challenge: Repository settings may include branch protection rules preventing force pushes.
    • Solution: Check repository settings on the hosting platform (e.g., GitHub, GitLab) for branch protection rules. If necessary, consult with repository administrators to adjust these rules.
  4. Authentication Issues:
    • Challenge: Insufficient permissions to push changes to the remote repository.
    • Solution: Ensure that you have the necessary write permissions for the remote repository. If using HTTPS, double-check your credentials. For SSH, ensure your SSH key is properly configured.
  5. Remote Repository Changes:
    • Challenge: Other collaborators have pushed changes to the remote branch.
    • Solution: Fetch the latest changes (git fetch) and either merge or rebase your local changes on top. Resolve any conflicts that may arise.
  6. Force Push Considerations:
    • Challenge: Considering a force push (git push -f) to override remote changes.
    • Solution: Exercise caution with force pushes, especially on shared branches. Communicate with collaborators, as force pushing can lead to the loss of their changes.
  7. Pull Request Workflow:
    • Challenge: Working with pull requests or merge requests on platforms like GitHub or GitLab.
    • Solution: Instead of pushing directly, consider merging changes through the platform’s pull request interface. This ensures a controlled and reviewed update to the remote branch.

By addressing these common challenges and variations, you can navigate through the troubleshooting process effectively, allowing for a smoother resolution of the “Push Rejected: Non-Fast Forward” error in diverse Git workflows.


The “Push Rejected Non-Fast Forward” error might seem daunting at first, but with the right steps, it’s easily manageable.

By ensuring your local branch is up to date, resolving conflicts, and following a systematic approach, you can confidently navigate this error and contribute effectively to your collaborative coding projects.

Git’s ability to handle concurrent changes is one of its strengths, and understanding how to resolve this error is a valuable skill for any developer.


Submit a Comment

Your email address will not be published. Required fields are marked *

Looking For Something?

Follow Us

Related Articles

Fix: Your branch is behind origin/master

Fix: Your branch is behind origin/master

How t fix 'Your branch is behind origin/master When you see the message "your branch is behind origin/master," it means that your local branch is not up-to-date with the remote branch (usually called "master"). To solve this, you need to bring your local branch...

Fix: Your branch is ahead of origin/master by 1 commit

Fix: Your branch is ahead of origin/master by 1 commit

How to fix 'Your branch is ahead of origin/master by 1 commit' Have you ever seen the message "Your branch is ahead of origin/master by 1 commit" and wondered what to do? Don't worry; it's a common thing, and fixing it is easier than it sounds. Here's a simple guide...

Subscribe To Our Newsletter

Subscribe To Our Newsletter

Join our mailing list to receive the latest news and updates from our team.

You have Successfully Subscribed!