Mastering Git Stash - A Guide to Saving and Restoring Your Code Changes

Introduction

git stash is one of those Git commands that can be an absolute lifesaver when you’re in the middle of a coding session. Imagine you’re working on a new feature and suddenly need to switch context—perhaps to a different branch to work on a hotfix. You don’t want to commit half-baked code, but you need to save your changes somewhere. Enter git stash.

In this article, we’ll explore various ways to use git stash to your advantage, helping you to save, manage, and restore your code changes effectively.

Basic Stashing

Saving Changes

The basic form of the git stash command is straightforward. Simply run:

1
git stash

This command takes your modified tracked files and stages them along with any new files you’ve indicated with git add, and stashes them away for later use.

Listing Stashes

You can view all your stashes using:

1
git stash list

This command will show you a list of all the stashes that you’ve created, making it easier to manage them.

Advanced Stashing Techniques

Applying the Latest Stash

You can apply the changes from the most recent stash using:

1
git stash apply

This command will keep the stash, allowing you to apply the same changes to multiple branches.

Popping the Latest Stash

Alternatively, you can use:

1
git stash pop

This will apply the stashed changes and remove them from your stash list.

Dropping a Stash

If you want to discard a stash, you can use:

1
git stash drop stash@{0}

This command will remove the specified stash from your stash list.

Applying a Specific Stash

If you’ve created multiple stashes, you can specify which stash to apply:

1
git stash apply stash@{1}

Or, if you wish to apply and remove it from the stash list:

1
git stash pop stash@{1}

Handling Conflicts

Just like with merges or rebases, conflicts can occur when you apply or pop a stash. You’ll have to resolve these conflicts manually before you can continue your work.

Conclusion

The git stash command is a powerful tool for managing changes in your Git repository. It enables you to switch between different tasks seamlessly, without losing your progress on any of them. Whether you’re a Git novice or a seasoned user, understanding how to effectively use git stash can significantly streamline your development workflow.

So the next time you find yourself needing to switch tasks but don’t want to lose your changes, remember: just stash it!

Cheers! 🍺