Read Anthropic’s case study about Graphite Reviewer

"is a merge but no -m option was given"

Greg Foster
Greg Foster
Graphite software engineer


Note

This guide explains this concept in vanilla Git. For Graphite documentation, see our CLI docs.


The error message "is a merge but no -m option was given" is one you may encounter while using Git, specifically when you're dealing with merge conflicts or complicated branch histories. This error is often seen after executing git commit without resolving a merge conflict or when Git is unable to automatically determine the parent commit. This guide aims to explain why this error occurs and how to fix it.

Join 20,000+ developers at top companies
Stop wrestling with Git commands
The Graphite CLI takes all the pain out of Git, allowing you to ship faster and stop googling Git commands.
main
diff1
diff2

This error typically occurs in the following scenarios:

  1. After a git merge operation, when you've resolved the conflicts but forgot to stage them for commit.

  2. After a git pull operation that involves merging changes.

  3. When trying to commit a merge manually without specifying the parent.

The error appears because Git is expecting more information to execute a merge commit. Specifically, it's asking for the parent commit SHA (or reference) via the -m option.

  1. First, make sure all conflicts have been resolved.

  2. Stage the resolved files using git add.

  3. Execute git commit -m "Your merge commit message".

If you don't wish to proceed with the merge, you can abort it and return to the state before the merge operation.

Terminal
git merge --abort

Use the git log command to identify the parent commit(s). Then, commit the merge by specifying the parent.

Terminal
git commit -m "Merge branch 'feature-branch'" -m <parent_commit_sha>
Join 20,000+ developers at top companies
The best engineers use Graphite to simplify Git
Engineers at Vercel, Snowflake & The Browser Company are shipping faster and staying unblocked with Graphite.
main
diff1
diff2

While Git is an incredibly useful tool, it has many shortcomings, particularly with rebasing, and managing stacked pull requests.

The Graphite CLI simplifies git, handles rebasing automatically, and allows you to create, submit, and stack pull requests right from the command line.

Under the hood, the CLI runs Git to create branches, commits, and metadata, which means you can still use Git in your scripts, tooling, or whenever you feel like it. Read more about installing the Graphite CLI in our docs.

screenshot of the Graphite CLI

  1. Always check for and resolve conflicts before attempting to commit a merge.

  2. If in doubt, consult the git log to check the commit history.

  3. Use git status to see the state of your working directory and staging area.

The "is a merge but no -m option was given" error can initially be confusing, but once you understand what Git is expecting, it's generally straightforward to resolve. Always make sure to resolve conflicts and stage them before attempting a merge commit, and use the -m option when necessary to specify the parent commit.

By taking the time to understand this error and how to resolve it, you'll be better equipped to handle complicated Git workflows and troubleshooting in the future.


FAQ

A: This error occurs when Git is attempting to make a merge commit but lacks the necessary information to do so. Specifically, it requires the parent commit to be specified, usually with the -m option.


A: Yes, the error can appear after a git pull command if the operation involves a merge and conflicts that haven't been resolved or staged for commit.


A: The -m option specifies the commit message for the merge commit. In some cases, Git also needs this option to identify the parent commit of the merge.


A: You can use git log to review the commit history and identify the parent commit(s). The parent commit SHA or reference can then be used with the -m option.


A: There are multiple ways to resolve this error:

  1. Manually commit the merge after resolving conflicts and staging them.

  2. Abort the merge altogether.

  3. Specify the parent commit during the merge commit.


A: No, this error can occur in multiple versions of Git and is not specific to any particular release.


A: Ignoring the error will likely result in an incomplete merge, which could lead to inconsistencies and issues in your code base. It's best to resolve the error as soon as possible.


A: Yes, GUI Git clients can also show this error. The resolution steps are generally the same, though the exact user interface and workflow may differ.


A: Always resolve and stage conflicts before attempting to commit a merge. Make sure you fully understand the branches you are merging and their parent-child relationship.


Graphite
Git stacked on GitHub

Stacked pull requests are easier to read, easier to write, and easier to manage.
Teams that stack ship better software, faster.

Or install our CLI.
Product Screenshot 1
Product Screenshot 2