Published on 12/18/2025
Git Shelves Are a Lie, Your IDE Is Lying to You
Git Shelves sounds real, but it isn’t.
When One Stash Wasn’t Enough
I was wondering if I could keep my local changes in separate steps, almost like multiple commits, without pushing anything and without stashing everything all at once.
In other words, I wanted to pause my work sequentially and come back to it later, step by step.
Naturally, I started searching.
That is when I came across a term that sounds very real:
git shelve
The Joy of Finding What I Was Looking For
At first glance, it felt like the perfect solution.
A clean way to store changes incrementally, without committing, without pushing, and without mixing everything into a single stash.
So I did what any reasonable developer would do — I checked the Git documentation.
And that is where the illusion collapsed.

The Sad Truth
There is no such thing as git shelve.
Not in Git. Not in the official documentation. Not in the real world of Git commands.
What I eventually discovered is that “shelving” is not a Git feature at all.
It is a concept borrowed from other version control systems and exposed by certain IDEs, most notably IntelliJ.
Under the hood, IntelliJ’s “Shelve Changes” feature is still just using:
git stash
As a VS Code user who relies on Cursor 24/7, I choose to stick with git stash rather than migrating to IntelliJ just to gain access to a shelving feature.
Native Git behavior feels more predictable and portable, even if one day I decide to change tools.
Here's the link to the official documentation from IntelliJ:
https://www.jetbrains.com/help/idea/shelving-and-unshelving-changes.html