Requiring a linear commit history
You can require a linear commit history to block all merge commits from a protected branch.
Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see "GitHub's products."
In this article
Anyone with admin permissions to a repository can require a linear commit history.
About enforcement of linear commit history
Enforcing a linear commit history prevents merge commits from being pushed to the protected branch. This means that any pull requests merged into the protected branch must use a squash merge or a rebase merge. A strictly linear commit history can help teams backtrack changes more efficiently. For more information about merge methods, see "About pull request merges."
You can automatically enforce protected branch settings for some or all branches in your repository. For more information, see "Configuring protected branches."
Before you can require a linear commit history, your repository must allow squash merging or rebase merging. For more information, see "Configuring pull request merges."
Enforcing a linear commit history
On GitHub, navigate to the main page of the repository.
Under your repository name, click Settings.
In the left menu, click Branches.
Next to "Branch protection rules", click Add rule.
Under "Branch name pattern", type the branch name or pattern you want to protect.
Under "Protect matching branches", select Require linear history.
Optionally, select Include administrators. This enforces all configured restrictions for repository administrators.