Только так и работает. Commit на то и commit, что это лишь намерение что-то изменить.
Поэтому пока вы не сделали push, все изменения сохраняются локально в виде отдельных коммитов.
В момент push все эти коммиты вместе уйдут в запросе слияния.
Чтобы сделать запрос слияния отдельного им комитта, используйте команду
git push <commit_hash>
.
Поскольку коммиты идут цепочкой, чтобы выбрать отдельный, можно использовать rebase:
https://stackoverflow.com/questions/604399/how-do-you-push-only-some-of-your-local-git-commits