Disable push to specific branches on GitHub

I have some Git private repositories on a GitHub company account, and I don’t want anybody to push on some specific branches (like master, develop and beta or by pattern). I also tried to define some hooks but I want this to be done on GitHub and not done with a pre-push hook on the clients.

So to explain my problem simply, I want:

  • How do I enforce the 50 character commit summary line in Sublime?
  • Git - remote: fatal: You are on a branch yet to be born
  • Make changes on Git project but dot nor overwrite file on project without approval
  • Git server under Windows using FreeSSHd
  • `fatal: Not a valid object name: 'master'` when creating a new branch in git
  • Git repository in OneDrive synced folder
  • git push origin develop

    to be refused by the server (which is GitHub) because of the branch name, but I do not want a client check by pre-push hook, I really want GitHub to do the check and refuse it.

    Also if it’s possible to allow only certain users to do so, but disabling it for everybody would be enough at first.

  • How to create a Gitlab webhook to update a mirror repo on Github?
  • How to run Git and CVS over the same folder
  • Private git submodule not found in Jenkins
  • How to disable direct push to Gerrit?
  • Git doesn't clone all branches on subsequent clones?
  • Is there workflow in git to share same file in multiple branch?
  • 3 Solutions collect form web for “Disable push to specific branches on GitHub”

    Ok I got the answer from IRC after a long chat. I’ll have to work with forks and pull requests, or add pre-push hooks on each dev’s machine since GitHub doesn’t allow per branch permissions neither pre-publish canceling hooks. Here is a part of the answers I got:

    Fork the repository. then the developer can work on their own version of the repository, and doesn’t have to worry about committing to the wrong branch. And then someone upstream can always merge into whatever branch should be committed into.

    Yeah but we’re a company and we don’t want that all our devs have forks

    Why not?

    Well they should be able to push their branch on a common repo to work with some other devs on the same feature for example.

    Have a read through https://help.github.com/articles/using-pull-requests. You can still send patches around between multiple forks. This is the model that git was built on

    I know but I want to be able to see quickly in a central way the actual work on any feature/hotfix, …

    To cut a long story short: GitHub doesn’t support per-branch permissions

    I know that this post is pretty old, but I believe that it may still help for some of you who are looking for an answer.

    Well, now it is possible on GitHub.
    Recently GitHub have introduced the Protected Branches feature, which makes it possible:

    Protected branches block several features of Git on a branch that a repository administrator chooses to protect. A protected branch:

    • Can’t be force pushed
    • Can’t be deleted
    • Can’t have changes merged into it until required status checks pass
    • Can’t have changes merged into it until required reviews are approved
    • Can’t be edited or have files uploaded to it from the web

    Good luck.

    The hooks you are looking for are pre-receive and update – the former is run once per push, the latter once per branch per push; but importantly, these are hooks on the server side.

    Git Baby is a git and github fan, let's start git clone.