DEV Community

Cover image for Guide to Git Stash: Keeping Your Workspace Clean While Coding
Aditya Sharma
Aditya Sharma

Posted on

Guide to Git Stash: Keeping Your Workspace Clean While Coding

Introduction

Ever been in the middle of coding and need to switch branches quickly, but don't want to lose or commit your current work? This is where git stash comes in. Git stashing is a powerful way to save and manage uncommitted changes, allowing you to switch contexts without cluttering your commit history.

git stash

What is Git Stash?

Git stash temporarily shelves (or "stashes") your modifications to a stack, allowing you to revert to a clean working directory. You can return to your stashed changes later, pop them off the stack, or even apply them selectively. This is ideal for situations where you’re not ready to commit changes but need to move to another branch or context.

Benefits of Using Git Stash

1. Flexibility: Safely switch branches without losing or committing incomplete work.

2. Clean Commit History: Avoid unnecessary commits of incomplete code.
Multi-tasking: Easily pick up where you left off after switching branches.

3. Testing Ideas: Experiment with code, stash it, and revert without needing a rollback commit.

Common Use Cases for Git Stash

  • Switching Branches: You're working on a feature, but you need to check something on another branch without committing partial work.

  • Handling Quick Fixes: A bug needs immediate attention in another branch. Stash your current work, switch branches, fix the bug, then return and continue where you left off.

  • Experimenting Without Committing: Try a new approach, stash it if you don’t like it, and easily discard or revert without adding unnecessary commits.

Using Git Stash: Commands and Examples

1. Stashing Your Changes

To save your changes in the stash:

git stash
Enter fullscreen mode Exit fullscreen mode

This command will save all uncommitted changes, leaving your working directory clean.

2. Naming Your Stashes for Easy Reference

It's good practice to add a message to your stashes so you know what each contains:

git stash push -m "work in progress on feature X"
Enter fullscreen mode Exit fullscreen mode

3. Viewing Stashed Changes

To see a list of all stashed changes, use:

git stash list
Enter fullscreen mode Exit fullscreen mode

Each stash entry is labeled, making it easy to identify.

4. Applying Stashed Changes

When you’re ready to reapply stashed changes, you can:

  • Apply the latest stash:
git stash apply
Enter fullscreen mode Exit fullscreen mode
  • Apply a specific stash:
git stash apply stash@{2}
Enter fullscreen mode Exit fullscreen mode

5. Removing a Stash After Applying

If you no longer need the stash after applying it, use:

git stash drop stash@{0}
Enter fullscreen mode Exit fullscreen mode

Or apply and remove the latest stash in one step:

git stash pop
Enter fullscreen mode Exit fullscreen mode

6. Clearing All Stashes

When you have no use for any stashed changes, you can clear them all:

git stash clear
Enter fullscreen mode Exit fullscreen mode

A Practical Example

Imagine you’re working on feature-branch:

1. Stash your uncommitted work:

git stash push -m "WIP: new feature implementation"
Enter fullscreen mode Exit fullscreen mode

2. Switch to main to address a bug fix:

git checkout main
Enter fullscreen mode Exit fullscreen mode

3. Work on the bug fix, commit it, and return:

git commit -am "fix critical bug in main"
git checkout feature-branch
Enter fullscreen mode Exit fullscreen mode

4. Apply your stashed changes and continue:

git stash pop
Enter fullscreen mode Exit fullscreen mode

Conclusion

Git stash is a lifesaver for managing uncommitted work while you switch tasks or contexts. By using Git stash effectively, you can ensure a cleaner workflow, maintain a tidy commit history, and work more flexibly on multiple tasks without risk of data loss.

thanks

Top comments (0)