Consider this, you are working on a Git branch, adding a new feature or fixing a bug but then we are required to work on another urgent issue. So in that case, we would be required to leave all our current work & move on to the new issue. So for situations like this, git provides us with a feature called STASH’.
Stash command for git allows us to keep aside the current working directory & provides us with a clean working directory. All the files that have been stashed can then be retrieved once we have time to work on them.
Recommended Read: Simple way to change home directory of Jenkins Server
Also Read: Informative guide to Gitlab tutorial for Beginners
In this beginner’s guide, we will discuss all the different options that can be used with stash.
Create a Stash
To create a stash & get a clean working directory, use the following command,
$ git stash
Or we can also use,
$ git stash save
This will stash all tracked files. In order to move all files, tracked or untracked, we need to use the following command,
$ git stash -u
Note:- Tracked files are those files that have either been added to index or committed. To see list of such files, run the command
$ git ls-files
Apply the stash
Now when we want to bring back the stashed files/folder back to the current working directory, we can issue the command,
$ git stash apply
Drop the Stash
After we have applied the stash, we no longer need that stash on our system & we need to drop it, with the following command,
$ git stash drop
Apply & Drop stash
We can also apply & drop the stash with a single command,
$ git stash pop
Creating multiple stashes
We might be required to add more than one stash on our system. So to be able to do that, we need an identifier as to which stash is which. This can be done by adding a message when we save the stash, using the following command,
$ git stash save “First stash”
$ git stash save “2nd Stash saving”
List all stashes
To get the list of all stashes, use the following command,
$ git stash list
It will provide the list like,
stash@{0}: On Master: 2nd Stash saving
stash@{1}: On Master: First stash
& stash@{0} will always be the latest stash.
To check details of a stash
We first need the stash id, which we can get from the above-mentioned command. Now to check details of all files in the stash, run
$ git stash show stash@{0}
Apply a stash from many stashes
To apply a stash to the current working directory, we will need the stash id which we can get from ‘ list’ command. Then we can run the following command,
$ git stash apply stash@{0}
Drop a stash from many stashes
Similar to above, we would need a stash id to drop it from the list. Then run the following command,
$ git stash drop stash@{0}
Drop all stashes
To drop all stashes from the system, execute the following command
$ git stash clear
Restore stash to a new branch
We can also use the stash command to bring all changes from a stash to a new branch. To do so, first, we need to stash the current working directory,
$ git stash -u
Now we have a clean working directory, next, we will create a new branch with the stashed content,
$ git stash branch branch_new
So this command creates a new branch, switch to that branch, then applies the stash to it & in last also drops the stash.
This is it for our tutorial on how to use stash on git. Please feel free to send in any questions or queries or suggestions using the comment box below.
Thanks for the useful article! I’d like to donate but I don’t have access to banking. Will you consider accepting Bitcoin cash?
Thanks for the offer but your appreciation is all that i need.