Git Stash
We use git stash to store our changes when they are not ready to be committed
and we need to change to a different branch.
-
Stash:
git stash save # or git stash # or with a message git stash save "this is a message to display on the list" -
Apply stash to keep working on it:
git stash apply # or apply a specific one from out stack git stash apply stash@{3} -
Every time we save a stash it gets stacked so by using
listwe can see all our stashes.git stash list # or for more information (log methods) git stash list --stat -
To clean our stack we need to manually remove them:
# drop top stash git stash drop # or git stash drop <name> # to clear all history we can use git stash clear -
Apply and drop on one command:
git stash pop -
If we meet conflicts we need to either reset or commit our changes.
-
Conflicts through
popdoesn't drop a stash afterwards.
Git Stash sample workflow
- Modify a file
- Stage file
- Stash it
- View our stash list
- Confirm no pending changes through status
- Apply with pop
- View list to confirm changes
# Modify edit_this_file.rb file
git add .
git stash save "Saving changes from edit this file"
git stash list
git status
git stash pop
git stash list
git status