Skip to main content

Configuring commit squashing for pull requests

You can enforce, allow, or disable commit squashing for all pull request merges on GitHub.com in your repository.

You can configure pull request merge options on GitHub.com to meet your workflow needs and preferences for managing Git history. For more information, see "Configuring pull request merges."

For information about the default commit messages for squash merges, see "About pull request merges."

  1. On GitHub.com, navigate to the main page of the repository.

  2. Under your repository name, click Settings. If you cannot see the "Settings" tab, select the dropdown menu, then click Settings.

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

  3. On the "General" settings page (which is selected by default), scroll down to the section marked "Pull Requests".

  4. Under "Pull Requests", select Allow squash merging. This allows contributors to merge a pull request by squashing all commits into a single commit. The default commit message presented to contributors when merging is the commit title and message if the pull request contains only 1 commit, or the pull request title and list of commits if the pull request contains 2 or more commits.

  5. Optionally, under Allow squash merging, select the dropdown menu, then click the format of the default squash commit message presented to contributors when merging.

    The default message uses the commit title and message if the pull request contains only 1 commit, or the pull request title and list of commits if the pull request contains 2 or more commits. You can also choose to use just the pull request title, the pull request title and commit details, or the pull request title and description.

If you select more than one merge method, collaborators can choose which type of merge commit to use when they merge a pull request. If there is a protected branch rule in your repository that requires a linear commit history, you must allow squash merging, rebase merging, or both. For more information, see "About protected branches."

Further reading