Elena' s AI Blog

Git Stash: The CTRL-Z for Your Working Directory

23 Jan 2026 (updated: 23 Jan 2026) / 3 minutes to read

Elena Daehnhardt


Git Stash Shelf, Midjourney 2026


TL;DR:
  • Use 'git stash' to temporarily save your changes without committing. Perfect for switching branches mid-work. Pop them back when you're ready.

Have you ever been in the middle of a complex feature, writing messy code, when suddenly a colleague asks you to fix a critical bug on production?

You can’t commit your broken code. You can’t lose your work. So, what do you do?

You stash it.

Introduction

git stash is one of those commands that feels like magic once you start using it. It takes your uncommitted changes (both staged and unstaged), saves them away for later use, and reverts your working directory to the last clean commit.

Think of it as a “Cut and Paste” for your entire project. You cut your current work, go do something else, and paste it back when you’re ready.

How to Stash Your Work

Using stash is incredibly simple. When you have modified files:

git stash

That’s it. Your directory is now clean. You can switch branches, pull updates, or fix that bug.

Getting Your Work Back

When you’re ready to resume your work, you have two main options:

  1. Pop: Applies the changes and removes them from the stash list.
    git stash pop
    
  2. Apply: Applies the changes but keeps a copy in the stash (useful if you want to apply it to multiple branches).
    git stash apply
    

I use pop 99% of the time because I like keeping my stash list clean.

Managing Multiple Stashes

You can stash more than once! Git keeps a stack of them. To see what you’ve stored:

git stash list

You’ll see output like this:

stash@{0}: WIP on feature-login: 1234567 Fixed header
stash@{1}: WIP on bug-fix: 89abcde Removed console logs

If you want to apply a specific one (not just the latest), you can refer to it by index:

git stash pop stash@{1}

Pro Tip: Stashing Untracked Files

By default, git stash only saves tracked files (files that Git already knows about). If you created a brand new file, it might be left behind.

To stash everything, including new files, use the -u (include untracked) flag:

git stash -u

Conclusion

git stash is a daily essential for any developer who multitasks. It keeps your commit history clean (no more “WIP” commits!) and gives you the flexibility to jump between contexts instantly.

Give it a try next time you’re interrupted!

Did you like this post? Please let me know if you have any comments or suggestions.

Git posts that might be interesting for you




desktop bg dark

About Elena

Elena, a PhD in Computer Science, simplifies AI concepts and helps you use machine learning.



Citation
Elena Daehnhardt. (2026) 'Git Stash: The CTRL-Z for Your Working Directory', daehnhardt.com, 23 January 2026. Available at: https://daehnhardt.com/blog/2026/01/23/git-stash/
All Posts