Git Stashing Explained

David CarrDavid Carr
2 min read

Stashing Changes

When working on a project, you might find yourself in a situation where you need to switch branches or pull updates from a remote repository, but you have uncommitted changes that you don't want to lose. This is where Git's stashing feature comes in handy. Stashing allows you to temporarily save your changes without committing them, so you can work on something else and come back to your changes later.

To stash your changes, you can use the following command:

git stash

This command saves your modified tracked files and staged changes to a new stash and reverts your working directory to match the HEAD commit. If you want to include untracked files in your stash, you can use:

git stash -u

Recovering Stashed Changes

When you're ready to continue working on your stashed changes, you can apply them back to your working directory. To see a list of all your stashes, use:

git stash list

This will display a list of stashes, each with an identifier like stash@{0}, stash@{1}, and so on. To apply the most recent stash, use:

git stash apply

If you want to apply a specific stash, you can specify its identifier:

git stash apply stash@{0}

Dropping a Stash

Once you have applied a stash and no longer need it, you can remove it from the stash list. To drop the most recent stash, use:

git stash drop

To drop a specific stash, specify its identifier:

git stash drop stash@{0}

Popping a Stash

If you want to apply a stash and remove it from the stash list in one step, you can use the pop command:

git stash pop

This command applies the most recent stash and then drops it. To pop a specific stash, specify its identifier:

git stash pop stash@{0}

By using these commands, you can effectively manage your uncommitted changes and keep your workflow smooth and organized.

0
Subscribe to my newsletter

Read articles from David Carr directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

David Carr
David Carr

Blogger at http://dcblog.dev.