How to View List of Stash Entries in Git

Azhar Bashir Khan Feb 02, 2024
How to View List of Stash Entries in Git

We are often required to pause on the work and focus on something else in a development environment. Thus, we may need to save our current work for the time being and focus on the different work. We later would like to resume back our original work.

The stash feature of Git, provided by the git stash command, allows us to save our changes for the work at hand temporarily. It will enable us to later resume our work by retrieving it from the temporary store.

We can do this operation of temporary saving of work many times. We thus would like to view the list of such stash entries and their contents. The git stash command provides us with options to browse the list of stash entries.

This tutorial will learn how to view the list of stash entries in Git. We will now illustrate this with an example.

Viewing List of Stash Entries in Git

The git stash command allows us to record the current state of the working directory of the project repository. It also allows us to save the current state of the index.

The git stash command saves local changes and reverts the working directory to match the HEAD commit. We can do this operation of shelving the changes on the working copy many times.

Thus, after performing the stashing many times, we now have a list of stash entries in our project’s Git repository. We can view the list of stash entries with the git stash list command.

The latest stash entry we created is stored in the refs/stash. The older stashes are found in the reflog of this reference. The most recent stash entry that is created is named stash@{0}. The one before it is named stash@{1} and so on.

The stashes can be referenced by specifying the stash index. For example, the integer n is equivalent to stash@{n}.

After creating a few stash entries, we can view them like this.

$ git stash list
stash@{0}: WIP on main: b14f387 some work
stash@{1}: WIP on main: b14f387 some other work
stash@{2}: WIP on main: b14f387 some older work

As shown above, we can see the list of three stash entries in the main branch of our Git repository. We can also view the contents of each stash entry.

To view the files in the most recent stash entry, we need to follow.

$ git stash show
 test.txt | 4 ++++
 1 file changed, 4 insertions(+)

We can see that the test.txt has been stashed most recently.

To view the changes of the files in the most recent stash entry, we need to do as follows.

$ git stash show -p
diff --git a/test.txt b/test.txt
index fae50f7..f60e878 100644
--- a/test.txt
+++ b/test.txt
@@ -73,4 +73,16 This test
 
 some old text
 
+ some new text
+1. Add this
+2. Add that
+

The git stash show command shows 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.

We can also view a specific stash using a name. We need to provide the name in git stash show -p <named-stash>.

Thus, to view the stash entry with the name stash@{1}, we would execute the command as follows.

$ git stash show -p stash@{1}

We can also see the stash entries across branches, not just the current one. We need to execute the following command for that.

$ git stash list --all

We can also view the stash history in Git by a date range. We need to use the command git stash list with the option --before or --after.

We can execute the command with the date range as below.

$ git stash list --before 3.days.ago
$ git stash list --after 2.days.ago

We can use the -stat option to summarize each element’s changes in the git stash history. As shown below, we can execute the command with the -stat option.

$ git stash list --stat

Thus, we have shown how to view the list of stash entries in Git.

Related Article - Git Stash