'\" t
.\"     Title: git-stash
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets v1.79.2 <http://docbook.sf.net/>
.\"      Date: 2025-11-19
.\"    Manual: Git Manual
.\"    Source: Git 2.52.0.38.g5e6e4854e0
.\"  Language: English
.\"
.TH "GIT\-STASH" "1" "2025-11-19" "Git 2\&.52\&.0\&.38\&.g5e6e485" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-stash \- Stash the changes in a dirty working directory away
.SH "SYNOPSIS"
.sp
.nf
\fBgit\fR \fBstash\fR \fBlist\fR [\fI<log\-options>\fR]
\fBgit\fR \fBstash\fR \fBshow\fR [\fB\-u\fR | \fB\-\-include\-untracked\fR | \fB\-\-only\-untracked\fR] [\fI<diff\-options>\fR] [\fI<stash>\fR]
\fBgit\fR \fBstash\fR \fBdrop\fR [\fB\-q\fR | \fB\-\-quiet\fR] [\fI<stash>\fR]
\fBgit\fR \fBstash\fR \fBpop\fR [\fB\-\-index\fR] [\fB\-q\fR | \fB\-\-quiet\fR] [\fI<stash>\fR]
\fBgit\fR \fBstash\fR \fBapply\fR [\fB\-\-index\fR] [\fB\-q\fR | \fB\-\-quiet\fR] [\fI<stash>\fR]
\fBgit\fR \fBstash\fR \fBbranch\fR \fI<branchname>\fR [\fI<stash>\fR]
\fBgit\fR \fBstash\fR [\fBpush\fR [\fB\-p\fR | \fB\-\-patch\fR] [\fB\-S\fR | \fB\-\-staged\fR] [\fB\-k\fR | \fB\-\-\fR[\fBno\-\fR]\fBkeep\-index\fR] [\fB\-q\fR | \fB\-\-quiet\fR]
	     [\fB\-u\fR | \fB\-\-include\-untracked\fR] [\fB\-a\fR | \fB\-\-all\fR] [(\fB\-m\fR | \fB\-\-message\fR) \fI<message>\fR]
	     [\fB\-\-pathspec\-from\-file=\fR\fI<file>\fR [\fB\-\-pathspec\-file\-nul\fR]]
	     [\fB\-\-\fR] [\fI<pathspec>\fR\&...\:]]
\fBgit\fR \fBstash\fR \fBsave\fR [\fB\-p\fR | \fB\-\-patch\fR] [\fB\-S\fR | \fB\-\-staged\fR] [\fB\-k\fR | \fB\-\-\fR[\fBno\-\fR]\fBkeep\-index\fR] [\fB\-q\fR | \fB\-\-quiet\fR]
           [\fB\-u\fR | \fB\-\-include\-untracked\fR] [\fB\-a\fR | \fB\-\-all\fR] [\fI<message>\fR]
\fBgit\fR \fBstash\fR \fBclear\fR
\fBgit\fR \fBstash\fR \fBcreate\fR [\fI<message>\fR]
\fBgit\fR \fBstash\fR \fBstore\fR [(\fB\-m\fR | \fB\-\-message\fR) \fI<message>\fR] [\fB\-q\fR | \fB\-\-quiet\fR] \fI<commit>\fR
\fBgit\fR \fBstash\fR \fBexport\fR (\fB\-\-print\fR | \fB\-\-to\-ref\fR \fI<ref>\fR) [\fI<stash>\fR\&...\:]
\fBgit\fR \fBstash\fR \fBimport\fR \fI<commit>\fR
.fi
.SH "DESCRIPTION"
.sp
Use \fBgit\fR \fBstash\fR when you want to record the current state of the working directory and the index, but want to go back to a clean working directory\&. The command saves your local modifications away and reverts the working directory to match the \fBHEAD\fR commit\&.
.sp
The modifications stashed away by this command can be listed with \fBgit\fR \fBstash\fR \fBlist\fR, inspected with \fBgit\fR \fBstash\fR \fBshow\fR, and restored (potentially on top of a different commit) with \fBgit\fR \fBstash\fR \fBapply\fR\&. Calling \fBgit\fR \fBstash\fR without any arguments is equivalent to \fBgit\fR \fBstash\fR \fBpush\fR\&. A stash is by default listed as "WIP on \fI<branchname>\fR \&...\:", but you can give a more descriptive message on the command line when you create one\&.
.sp
The latest stash you created is stored in \fBrefs/stash\fR; older stashes are found in the reflog of this reference and can be named using the usual reflog syntax (e\&.g\&. \fBstash@\fR{0} is the most recently created stash, \fBstash@\fR{1} is the one before it, \fBstash@\fR{2\&.\fBhours\&.ago\fR} is also possible)\&. Stashes may also be referenced by specifying just the stash index (e\&.g\&. the integer \fI<n>\fR is equivalent to \fBstash@\fR{\fI<n>\fR})\&.
.SH "COMMANDS"
.PP
\fBpush\fR [\fB\-p\fR | \fB\-\-patch\fR] [\fB\-S\fR | \fB\-\-staged\fR] [\fB\-k\fR | \fB\-\-\fR[\fBno\-\fR]\fBkeep\-index\fR] [\fB\-u\fR | \fB\-\-include\-untracked\fR] [ \fB\-a\fR | \fB\-\-all\fR] [\fB\-q\fR | \fB\-\-quiet\fR] [(\fB\-m\fR|\fB\-\-message\fR) \fI<message>\fR] [\fB\-\-pathspec\-from\-file=\fR\fI<file>\fR [\fB\-\-pathspec\-file\-nul\fR]] [\fB\-\-\fR] [\fI<pathspec>\fR\&.\&.\&.]
.RS 4
Save your local modifications to a new
\fIstash entry\fR
and roll them back to
\fBHEAD\fR
(in the working tree and in the index)\&. The
\fI<message>\fR
part is optional and gives the description along with the stashed state\&.
.sp
For quickly making a snapshot, you can omit "push"\&. In this mode, non\-option arguments are not allowed to prevent a misspelled subcommand from making an unwanted stash entry\&. The two exceptions to this are
\fBstash\fR
\fB\-p\fR
which acts as alias for
\fBstash\fR
\fBpush\fR
\fB\-p\fR
and pathspec elements, which are allowed after a double hyphen
\fB\-\-\fR
for disambiguation\&.
.RE
.PP
\fBsave\fR [\fB\-p\fR | \fB\-\-patch\fR] [\fB\-S\fR | \fB\-\-staged\fR] [\fB\-k\fR | \fB\-\-\fR[\fBno\-\fR]\fBkeep\-index\fR] [\fB\-u\fR | \fB\-\-include\-untracked\fR] [\fB\-a\fR | \fB\-\-all\fR] [\fB\-q\fR | \fB\-\-quiet\fR] [\fI<message>\fR]
.RS 4
This option is deprecated in favour of
\fIgit stash push\fR\&. It differs from "stash push" in that it cannot take pathspec\&. Instead, all non\-option arguments are concatenated to form the stash message\&.
.RE
.PP
\fBlist\fR [\fI<log\-options>\fR]
.RS 4
List the stash entries that you currently have\&. Each
\fIstash entry\fR
is listed with its name (e\&.g\&.
\fBstash@\fR{0} is the latest entry,
\fBstash@\fR{1} is the one before, etc\&.), 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\&.
.sp
.if n \{\
.RS 4
.\}
.nf
stash@{0}: WIP on submit: 6ebd0e2\&.\&.\&. Update git\-stash documentation
stash@{1}: On master: 9cc0589\&.\&.\&. Add git\-stash
.fi
.if n \{\
.RE
.\}
.sp
The command takes options applicable to the
\fIgit log\fR
command to control what is shown and how\&. See
\fBgit-log\fR(1)\&.
.RE
.PP
\fBshow\fR [\fB\-u\fR | \fB\-\-include\-untracked\fR | \fB\-\-only\-untracked\fR] [\fI<diff\-options>\fR] [\fI<stash>\fR]
.RS 4
Show 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\&. By default, the command shows the diffstat, but it will accept any format known to
\fIgit diff\fR
(e\&.g\&.,
\fBgit\fR
\fBstash\fR
\fBshow\fR
\fB\-p\fR
\fBstash@\fR{1} to view the second most recent entry in patch form)\&. If no
\fI<diff\-option>\fR
is provided, the default behavior will be given by the
\fBstash\&.showStat\fR, and
\fBstash\&.showPatch\fR
config variables\&. You can also use
\fBstash\&.showIncludeUntracked\fR
to set whether
\fB\-\-include\-untracked\fR
is enabled by default\&.
.RE
.PP
\fBpop\fR [\fB\-\-index\fR] [\fB\-q\fR | \fB\-\-quiet\fR] [\fI<stash>\fR]
.RS 4
Remove a single stashed state from the stash list and apply it on top of the current working tree state, i\&.e\&., do the inverse operation of
\fBgit\fR
\fBstash\fR
\fBpush\fR\&. The working directory must match the index\&.
.sp
Applying the state can fail with conflicts; in this case, it is not removed from the stash list\&. You need to resolve the conflicts by hand and call
\fBgit\fR
\fBstash\fR
\fBdrop\fR
manually afterwards\&.
.RE
.PP
\fBapply\fR [\fB\-\-index\fR] [\fB\-q\fR | \fB\-\-quiet\fR] [\fI<stash>\fR]
.RS 4
Like
\fBpop\fR, but do not remove the state from the stash list\&. Unlike
\fBpop\fR,
\fI<stash>\fR
may be any commit that looks like a commit created by
\fBstash\fR
\fBpush\fR
or
\fBstash\fR
\fBcreate\fR\&.
.RE
.PP
\fBbranch\fR \fI<branchname>\fR [\fI<stash>\fR]
.RS 4
Creates and checks out a new branch named
\fI<branchname>\fR
starting from the commit at which the
\fI<stash>\fR
was originally created, applies the changes recorded in
\fI<stash>\fR
to the new working tree and index\&. If that succeeds, and
\fI<stash>\fR
is a reference of the form
\fBstash@\fR{\fI<revision>\fR}, it then drops the
\fI<stash>\fR\&.
.sp
This is useful if the branch on which you ran
\fBgit\fR
\fBstash\fR
\fBpush\fR
has changed enough that
\fBgit\fR
\fBstash\fR
\fBapply\fR
fails due to conflicts\&. Since the stash entry is applied on top of the commit that was HEAD at the time
\fBgit\fR
\fBstash\fR
was run, it restores the originally stashed state with no conflicts\&.
.RE
.PP
\fBclear\fR
.RS 4
Remove all the stash entries\&. Note that those entries will then be subject to pruning, and may be impossible to recover (see
\fIEXAMPLES\fR
below for a possible strategy)\&.
.RE
.PP
\fBdrop\fR [\fB\-q\fR | \fB\-\-quiet\fR] [\fI<stash>\fR]
.RS 4
Remove a single stash entry from the list of stash entries\&.
.RE
.PP
\fBcreate\fR
.RS 4
Create a stash entry (which is a regular commit object) and return its object name, without storing it anywhere in the ref namespace\&. This is intended to be useful for scripts\&. It is probably not the command you want to use; see "push" above\&.
.RE
.PP
\fBstore\fR
.RS 4
Store a given stash created via
\fIgit stash create\fR
(which is a dangling merge commit) in the stash ref, updating the stash reflog\&. This is intended to be useful for scripts\&. It is probably not the command you want to use; see "push" above\&.
.RE
.PP
\fBexport\fR ( \fB\-\-print\fR | \fB\-\-to\-ref\fR \fI<ref>\fR ) [\fI<stash>\fR\&.\&.\&.]
.RS 4
Export the specified stashes, or all of them if none are specified, to a chain of commits which can be transferred using the normal fetch and push mechanisms, then imported using the
\fBimport\fR
subcommand\&.
.RE
.PP
\fBimport\fR \fI<commit>\fR
.RS 4
Import the specified stashes from the specified commit, which must have been created by
\fBexport\fR, and add them to the list of stashes\&. To replace the existing stashes, use
\fBclear\fR
first\&.
.RE
.SH "OPTIONS"
.PP
\fB\-a\fR, \fB\-\-all\fR
.RS 4
This option is only valid for
\fBpush\fR
and
\fBsave\fR
commands\&.
.sp
All ignored and untracked files are also stashed and then cleaned up with
\fBgit\fR
\fBclean\fR\&.
.RE
.PP
\fB\-u\fR, \fB\-\-include\-untracked\fR, \fB\-\-no\-include\-untracked\fR
.RS 4
When used with the
\fBpush\fR
and
\fBsave\fR
commands, all untracked files are also stashed and then cleaned up with
\fBgit\fR
\fBclean\fR\&.
.sp
When used with the
\fBshow\fR
command, show the untracked files in the stash entry as part of the diff\&.
.RE
.PP
\fB\-\-only\-untracked\fR
.RS 4
This option is only valid for the
\fBshow\fR
command\&.
.sp
Show only the untracked files in the stash entry as part of the diff\&.
.RE
.PP
\fB\-\-index\fR
.RS 4
This option is only valid for
\fBpop\fR
and
\fBapply\fR
commands\&.
.sp
Tries to reinstate not only the working tree\(cqs changes, but also the index\(cqs ones\&. However, this can fail, when you have conflicts (which are stored in the index, where you therefore can no longer apply the changes as they were originally)\&.
.RE
.PP
\fB\-k\fR, \fB\-\-keep\-index\fR, \fB\-\-no\-keep\-index\fR
.RS 4
This option is only valid for
\fBpush\fR
and
\fBsave\fR
commands\&.
.sp
All changes already added to the index are left intact\&.
.RE
.PP
\fB\-p\fR, \fB\-\-patch\fR
.RS 4
This option is only valid for
\fBpush\fR
and
\fBsave\fR
commands\&.
.sp
Interactively select hunks from the diff between HEAD and the working tree to be stashed\&. The stash entry is constructed such that its index state is the same as the index state of your repository, and its worktree contains only the changes you selected interactively\&. The selected changes are then rolled back from your worktree\&. See the
\(lqInteractive Mode\(rq
section of
\fBgit-add\fR(1)
to learn how to operate the
\fB\-\-patch\fR
mode\&.
.sp
The
\fB\-\-patch\fR
option implies
\fB\-\-keep\-index\fR\&. You can use
\fB\-\-no\-keep\-index\fR
to override this\&.
.RE
.PP
\fB\-U\fR\fI<n>\fR, \fB\-\-unified=\fR\fI<n>\fR
.RS 4
Generate diffs with
\fI<n>\fR
lines of context\&. Defaults to
\fBdiff\&.context\fR
or 3 if the config option is unset\&.
.RE
.PP
\fB\-\-inter\-hunk\-context=\fR\fI<n>\fR
.RS 4
Show the context between diff hunks, up to the specified
\fI<number>\fR
of lines, thereby fusing hunks that are close to each other\&. Defaults to
\fBdiff\&.interHunkContext\fR
or 0 if the config option is unset\&.
.RE
.PP
\fB\-S\fR, \fB\-\-staged\fR
.RS 4
This option is only valid for
\fBpush\fR
and
\fBsave\fR
commands\&.
.sp
Stash only the changes that are currently staged\&. This is similar to basic
\fBgit\fR
\fBcommit\fR
except the state is committed to the stash instead of current branch\&.
.sp
The
\fB\-\-patch\fR
option has priority over this one\&.
.RE
.PP
\fB\-\-pathspec\-from\-file=\fR\fI<file>\fR
.RS 4
This option is only valid for
\fBpush\fR
command\&.
.sp
Pathspec is passed in
\fI<file>\fR
instead of commandline args\&. If
\fI<file>\fR
is exactly
\fB\-\fR
then standard input is used\&. Pathspec elements are separated by LF or CR/LF\&. Pathspec elements can be quoted as explained for the configuration variable
\fBcore\&.quotePath\fR
(see
\fBgit-config\fR(1))\&. See also
\fB\-\-pathspec\-file\-nul\fR
and global
\fB\-\-literal\-pathspecs\fR\&.
.RE
.PP
\fB\-\-pathspec\-file\-nul\fR
.RS 4
This option is only valid for
\fBpush\fR
command\&.
.sp
Only meaningful with
\fB\-\-pathspec\-from\-file\fR\&. Pathspec elements are separated with NUL character and all other characters are taken literally (including newlines and quotes)\&.
.RE
.PP
\fB\-q\fR, \fB\-\-quiet\fR
.RS 4
This option is only valid for
\fBapply\fR,
\fBdrop\fR,
\fBpop\fR,
\fBpush\fR,
\fBsave\fR,
\fBstore\fR
commands\&.
.sp
Quiet, suppress feedback messages\&.
.RE
.PP
\fB\-\-print\fR
.RS 4
This option is only valid for the
\fBexport\fR
command\&.
.sp
Create the chain of commits representing the exported stashes without storing it anywhere in the ref namespace and print the object ID to standard output\&. This is designed for scripts\&.
.RE
.PP
\fB\-\-to\-ref\fR
.RS 4
This option is only valid for the
\fBexport\fR
command\&.
.sp
Create the chain of commits representing the exported stashes and store it to the specified ref\&.
.RE
.PP
\fB\-\-\fR
.RS 4
This option is only valid for
\fBpush\fR
command\&.
.sp
Separates pathspec from options for disambiguation purposes\&.
.RE
.PP
\fI<pathspec>\fR\&.\&.\&.
.RS 4
This option is only valid for
\fBpush\fR
command\&.
.sp
The new stash entry records the modified states only for the files that match the pathspec\&. The index entries and working tree files are then rolled back to the state in HEAD only for these files, too, leaving files that do not match the pathspec intact\&.
.sp
For more details, see the
\fIpathspec\fR
entry in
\fBgitglossary\fR(7)\&.
.RE
.PP
\fI<stash>\fR
.RS 4
This option is only valid for
\fBapply\fR,
\fBbranch\fR,
\fBdrop\fR,
\fBpop\fR,
\fBshow\fR, and
\fBexport\fR
commands\&.
.sp
A reference of the form
\fBstash@\fR{\fI<revision>\fR}\&. When no
\fI<stash>\fR
is given, the latest stash is assumed (that is,
\fBstash@\fR{0})\&.
.RE
.SH "DISCUSSION"
.sp
A stash entry is represented as a commit whose tree records the state of the working directory, and its first parent is the commit at \fBHEAD\fR when the entry was created\&. The tree of the second parent records the state of the index when the entry is made, and it is made a child of the \fBHEAD\fR commit\&. The ancestry graph looks like this:
.sp
.if n \{\
.RS 4
.\}
.nf
       \&.\-\-\-\-W
      /    /
\-\-\-\-\-H\-\-\-\-I
.fi
.if n \{\
.RE
.\}
.sp
where \fBH\fR is the \fBHEAD\fR commit, \fBI\fR is a commit that records the state of the index, and \fBW\fR is a commit that records the state of the working tree\&.
.SH "EXAMPLES"
.PP
Pulling into a dirty tree
.RS 4
When you are in the middle of something, you learn that there are upstream changes that are possibly relevant to what you are doing\&. When your local changes do not conflict with the changes in the upstream, a simple
\fBgit\fR
\fBpull\fR
will let you move forward\&.
.sp
However, there are cases in which your local changes do conflict with the upstream changes, and
\fBgit\fR
\fBpull\fR
refuses to overwrite your changes\&. In such a case, you can stash your changes away, perform a pull, and then unstash, like this:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git pull
 \&.\&.\&.
file foobar not up to date, cannot merge\&.
$ git stash
$ git pull
$ git stash pop
.fi
.if n \{\
.RE
.\}
.RE
.PP
Interrupted workflow
.RS 4
When you are in the middle of something, your boss comes in and demands that you fix something immediately\&. Traditionally, you would make a commit to a temporary branch to store your changes away, and return to your original branch to make the emergency fix, like this:
.sp
.if n \{\
.RS 4
.\}
.nf
# \&.\&.\&. hack hack hack \&.\&.\&.
$ git switch \-c my_wip
$ git commit \-a \-m "WIP"
$ git switch master
$ edit emergency fix
$ git commit \-a \-m "Fix in a hurry"
$ git switch my_wip
$ git reset \-\-soft HEAD^
# \&.\&.\&. continue hacking \&.\&.\&.
.fi
.if n \{\
.RE
.\}
.sp
You can use
\fIgit stash\fR
to simplify the above, like this:
.sp
.if n \{\
.RS 4
.\}
.nf
# \&.\&.\&. hack hack hack \&.\&.\&.
$ git stash
$ edit emergency fix
$ git commit \-a \-m "Fix in a hurry"
$ git stash pop
# \&.\&.\&. continue hacking \&.\&.\&.
.fi
.if n \{\
.RE
.\}
.RE
.PP
Testing partial commits
.RS 4
You can use
\fBgit\fR
\fBstash\fR
\fBpush\fR
\fB\-\-keep\-index\fR
when you want to make two or more commits out of the changes in the work tree, and you want to test each change before committing:
.sp
.if n \{\
.RS 4
.\}
.nf
# \&.\&.\&. hack hack hack \&.\&.\&.
$ git add \-\-patch foo            # add just first part to the index
$ git stash push \-\-keep\-index    # save all other changes to the stash
$ edit/build/test first part
$ git commit \-m \*(AqFirst part\*(Aq     # commit fully tested change
$ git stash pop                  # prepare to work on all other changes
# \&.\&.\&. repeat above five steps until one commit remains \&.\&.\&.
$ edit/build/test remaining parts
$ git commit foo \-m \*(AqRemaining parts\*(Aq
.fi
.if n \{\
.RE
.\}
.RE
.PP
Saving unrelated changes for future use
.RS 4
When you are in the middle of massive changes and you find some unrelated issue that you don\(cqt want to forget to fix, you can do the change(s), stage them, and use
\fBgit\fR
\fBstash\fR
\fBpush\fR
\fB\-\-staged\fR
to stash them out for future use\&. This is similar to committing the staged changes, only the commit ends\-up being in the stash and not on the current branch\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# \&.\&.\&. hack hack hack \&.\&.\&.
$ git add \-\-patch foo           # add unrelated changes to the index
$ git stash push \-\-staged       # save these changes to the stash
# \&.\&.\&. hack hack hack, finish current changes \&.\&.\&.
$ git commit \-m \*(AqMassive\*(Aq       # commit fully tested changes
$ git switch fixup\-branch       # switch to another branch
$ git stash pop                 # to finish work on the saved changes
.fi
.if n \{\
.RE
.\}
.RE
.PP
Recovering stash entries that were cleared/dropped erroneously
.RS 4
If you mistakenly drop or clear stash entries, they cannot be recovered through the normal safety mechanisms\&. However, you can try the following incantation to get a list of stash entries that are still in your repository, but not reachable any more:
.sp
.if n \{\
.RS 4
.\}
.nf
git fsck \-\-unreachable |
grep commit | cut \-d\e  \-f3 |
xargs git log \-\-merges \-\-no\-walk \-\-grep=WIP
.fi
.if n \{\
.RE
.\}
.RE
.SH "CONFIGURATION"
.sp
Everything below this line in this section is selectively included from the \fBgit-config\fR(1) documentation\&. The content is the same as what\(cqs found there:
.PP
\fBstash\&.index\fR
.RS 4
If this is set to true,
\fBgit\fR
\fBstash\fR
\fBapply\fR
and
\fBgit\fR
\fBstash\fR
\fBpop\fR
will behave as if
\fB\-\-index\fR
was supplied\&. Defaults to false\&.
.RE
.PP
\fBstash\&.showIncludeUntracked\fR
.RS 4
If this is set to true, the
\fBgit\fR
\fBstash\fR
\fBshow\fR
command will show the untracked files of a stash entry\&. Defaults to false\&.
.RE
.PP
\fBstash\&.showPatch\fR
.RS 4
If this is set to true, the
\fBgit\fR
\fBstash\fR
\fBshow\fR
command without an option will show the stash entry in patch form\&. Defaults to false\&.
.RE
.PP
\fBstash\&.showStat\fR
.RS 4
If this is set to true, the
\fBgit\fR
\fBstash\fR
\fBshow\fR
command without an option will show a diffstat of the stash entry\&. Defaults to true\&.
.RE
.SH "SEE ALSO"
.sp
\fBgit-checkout\fR(1), \fBgit-commit\fR(1), \fBgit-reflog\fR(1), \fBgit-reset\fR(1), \fBgit-switch\fR(1)
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
