Stashing in Git
testYourself Git447
List the stash
The git stash list
command lists the stash entries that you currently have. Each stash entry is listed with its name, the name of the branch that was current when the entry was made, and a short description of the commit the entry was based on.
$ git stash list
stash@{0}: On master: added products page
stash@{1}: On master: added contact page
stash@{2}: On master: added home page
Add entries to a stash
To add some changes to stash just run git stash push
.
The git stash push
saves your local modifications to a new stash entry and reverts the working directory to match the HEAD commit. You can also use the shorter command git stash
as it is a shorthand to the git stash push
.
$ git stash push -m "added products page"
Saved working directory and index state On master: added products page
Pop entry from a stash
To get your changes back run git stash pop
command. This command remove a single stashed state from the stash list and apply it to your working directory.
The git stash apply
command works like the git stash pop
but it doesn't remove the state from the stash list.
$ git stash pop
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
Creating a branch from a stash
You can also use the git stash branch
comand that creates a new branch for you, checks out the commit you were on when you stashed your work, reapplies your work there, and then drops the stash if it applies successfully.
$ git stash branch products-page
Switched to a new branch 'products-page'
Displaying a stash
The git stash show
command display the changes recorded in the stash entry as a diff between the stashed contents and the commit back when the stash entry was first created.
git stash show -p stash@{1}
Remove a stash
The git stash drop
command remove a single stash entry from the list of stash entries. When no argument is provided, it removes the latest one.
$ git stash drop stash@{1}
Dropped stash@{1} (be6208e83f2eece1d535d08ba7829e704059223c)
Remove all stashes
The git stash clear
remove all the stash entries. Please note that you may not be able to recover deleted entries after you run this command.
$ git stash clear