How to fix "git pre-receive hook declined"?

Tim Mouskhelichvili
Tim Mouskhelichvili
3 minutes to read

The git "pre-receive hook declined" error is a common error that developers can encounter while using a git hosting service like Gitlab, Github, or BitBucket.

In most cases, this error happens because the developer lacks the permission to push to a specific branch.

This article will explore all the different reasons for this error. Also, we will look at possible solutions for each one of them.

Let's get to it 😎.

git pre receive hook declined

Why the "pre-receive hook declined" error happens?

The "pre-receive hook declined" error can happen when you push a commit to a remote repository using the git push command.

This error means that the pre-receive hook rejected your commit. It is a script configurable by the user that analyses all the incoming commits and decides if they should be let through or not.

Here are some of the most common reasons for this error.

1. Pushing to master/main branch

Many git providers mark the master branch as protected, so you will not be able to push to it directly.

To fix this error, you can:

  • Mark the master branch as unprotected (in settings > protected branches).
  • Give yourself the permission to push (if you are not the administrator of the git repository, you will need to ask an administrator to permit you to push to the main branch).

However, it is safest never directly push to the main branch.

Instead, you can create a pull request, ask another developer to approve it, and merge it to the main branch.

This ensures that your changes are seen and approved by others. Plus, your Git CLI can run tests to ensure that your changes did not break anything.

2. Pushing to a protected branch

protected branch

This error can also happen if you push to a protected branch that you do not have permission to push to.

In this case, you need to ask the maintainer of the repository to permit you to push to this branch.

Note: If you are using Bitbucket, check Branch Permissions in Settings.

3. Rewriting history

Some git services, like BitBucket, have a special flag to prevent developers from rewriting the history of a git branch.

To fix this error in BitBucket, go to Branch Permissions and check the Allow rewriting branch history flag.

4. Non-fast-forward push

Sometimes another developer commits to the same branch as you, and if you didn't fetch and merge his changes and try to push, you would get this error.

Use the git pull command to update your branch and fix this error.

5. Servers are down

Sometimes this error happens because the Git hosting servers are down.

You can check your Git hosting service's official Twitter feed to see if this is the case.

In this case, you need to wait for those servers to be up again.

Final thoughts

As you can see, most of the time, this error is fixed by some sort of permission flag on your Git hosting service settings page.

git pre-receive hook declined

Here are some other Git tutorials for you to enjoy:

Comments (3)
Reply to:
Jonas August 14, 2023 10:06AM
Thanks for your article. Just unprotected the main branch for my project :)
REPLY
Woniok Chung August 08, 2023 01:24AM
This article is being helpful to me. Thank you for writing it~! 😀
REPLY
World of Fear March 29, 2023 10:49AM
Thank you for the article. I should have allowed myself to do a force push
REPLY