“Do not merge,” often shortened to DNM, is a warning attached to a pull request. The change exists so people can see it, test it or discuss it, but it should not go into the main branch yet. It might depend on another change, be waiting for a release window, or be an experiment that was never meant to land.
Teams mark it in a few ways: a “do not merge” label, a DNM or WIP prefix in the title, or a line at the top of the description. Labels and titles are conventions, though. Nothing stops someone from clicking merge on a green pull request that only says “please don’t.”
The built-in tools are more reliable. GitHub has draft pull requests, which cannot be merged until someone marks them “Ready for review.” GitLab has draft merge requests, set by starting the title with “Draft:” or using the mark-as-draft option. Some teams also add a required status check that fails while the do-not-merge label is present, so branch protection enforces it.
When you use the label, say why and what would remove it: “DNM until the billing migration ships on Thursday.” A pull request that says do not merge with no reason tends to stay open forever, because nobody is sure who is allowed to decide.
And when the condition clears, take the label off. The next person will assume it still means something.
This is the one piece printed on the back instead of the front. People behind you can read it as policy.
In the wild
Marking this DNM until the API change in #431 is deployed. Review is welcome now.
