You can not only push the current state of a branch to its remote branch, you can push any commits to any remote branch. This way you can for example push all your commit except the latest with:

git push remotename @~:branchname

I regularly use this when my current commit is not finished yet, but I want to push the already finished work done in previous commits. How does this work? The first argument to git push is the remote to which you want to push code (usually origin), the second specifies which commit to push to which remote branch. The @ is short for HEAD – the current commit, and the ~ selects its parent commit. You can use @~~ or @~2 if you want to skip the last two commits and so on. After the colon, you specify the branch name on the target on that you want to push.

en shorterhacks git

The series Shorter Hacks consists of tips and tricks for Linux nerds. Flags, hacks, and features of everyday tools that you might not know already, but that will enrich your life. I currently have a list of around 40 hacks I collected and plan to publish them roughly weekly. In order for this series to continue, please send me your best trick(s). The focus is not on fancy new tools or extensive rc-file content, but little known features in software most people already use. Send them to michael bei schoenitzer punkt de.
This blog has an Atom-Feed and I plan to also post the Shorter Hacks articles on Mastodon and Twitter.

Creative Commons License "Shorter Hacks 21 Git push previous commit" by Michael F. Schönitzer is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.