> It's odd how neither this post, nor the spec, nor GitHub's "Mastering Markdown" help page[1], nor the more complete "Basic writing and formatting syntax" page[2], mentions the fact that GitHub treats every newline as a hard break.
Well, actually it does say that "Hard line breaks are for separating inline content within a block."
https://github.github.com/gfm/#hard-line-break
So two spaces at the end of the line for a <br>, and an empty line for <p>.