about summary refs log tree commit diff
path: root/third_party/git/Documentation/git-stash.txt
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/git/Documentation/git-stash.txt')
-rw-r--r--third_party/git/Documentation/git-stash.txt147
1 files changed, 45 insertions, 102 deletions
diff --git a/third_party/git/Documentation/git-stash.txt b/third_party/git/Documentation/git-stash.txt
index 31f1beb65baf..8fbe12c66c82 100644
--- a/third_party/git/Documentation/git-stash.txt
+++ b/third_party/git/Documentation/git-stash.txt
@@ -15,7 +15,6 @@ SYNOPSIS
 'git stash' branch <branchname> [<stash>]
 'git stash' [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
 	     [-u|--include-untracked] [-a|--all] [-m|--message <message>]
-	     [--pathspec-from-file=<file> [--pathspec-file-nul]]
 	     [--] [<pathspec>...]]
 'git stash' clear
 'git stash' create [<message>]
@@ -44,10 +43,10 @@ created stash, `stash@{1}` is the one before it, `stash@{2.hours.ago}`
 is also possible). Stashes may also be referenced by specifying just the
 stash index (e.g. the integer `n` is equivalent to `stash@{n}`).
 
-COMMANDS
---------
+OPTIONS
+-------
 
-push [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [-m|--message <message>] [--pathspec-from-file=<file> [--pathspec-file-nul]] [--] [<pathspec>...]::
+push [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [-m|--message <message>] [--] [<pathspec>...]::
 
 	Save your local modifications to a new 'stash entry' and roll them
 	back to HEAD (in the working tree and in the index).
@@ -57,15 +56,39 @@ push [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q
 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 `stash -p` which acts as alias for `stash push -p` and pathspec elements,
+are `stash -p` which acts as alias for `stash push -p` and pathspecs,
 which are allowed after a double hyphen `--` for disambiguation.
++
+When pathspec is given to 'git stash push', 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.
++
+If the `--keep-index` option is used, all changes already added to the
+index are left intact.
++
+If the `--include-untracked` option is used, all untracked files are also
+stashed and then cleaned up with `git clean`, leaving the working directory
+in a very clean state. If the `--all` option is used instead then the
+ignored files are stashed and cleaned in addition to the untracked files.
++
+With `--patch`, you can 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 ``Interactive Mode'' section of
+linkgit:git-add[1] to learn how to operate the `--patch` mode.
++
+The `--patch` option implies `--keep-index`.  You can use
+`--no-keep-index` to override this.
 
 save [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [<message>]::
 
 	This option is deprecated in favour of 'git stash push'.  It
-	differs from "stash push" in that it cannot take pathspec.
-	Instead, all non-option arguments are concatenated to form the stash
-	message.
+	differs from "stash push" in that it cannot take pathspecs,
+	and any non-option arguments form the message.
 
 list [<options>]::
 
@@ -87,7 +110,7 @@ show [<options>] [<stash>]::
 
 	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.
+	created. When no `<stash>` is given, it shows the latest one.
 	By default, the command shows the diffstat, but it will accept any
 	format known to 'git diff' (e.g., `git stash show -p stash@{1}`
 	to view the second most recent entry in patch form).
@@ -104,6 +127,14 @@ pop [--index] [-q|--quiet] [<stash>]::
 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 `git stash drop` manually afterwards.
++
+If the `--index` option is used, then tries to reinstate not only the working
+tree's changes, but also the index's 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).
++
+When no `<stash>` is given, `stash@{0}` is assumed, otherwise `<stash>` must
+be a reference of the form `stash@{<revision>}`.
 
 apply [--index] [-q|--quiet] [<stash>]::
 
@@ -117,7 +148,8 @@ branch <branchname> [<stash>]::
 	the commit at which the `<stash>` was originally created, applies the
 	changes recorded in `<stash>` to the new working tree and index.
 	If that succeeds, and `<stash>` is a reference of the form
-	`stash@{<revision>}`, it then drops the `<stash>`.
+	`stash@{<revision>}`, it then drops the `<stash>`. When no `<stash>`
+	is given, applies the latest one.
 +
 This is useful if the branch on which you ran `git stash push` has
 changed enough that `git stash apply` fails due to conflicts. Since
@@ -133,6 +165,9 @@ clear::
 drop [-q|--quiet] [<stash>]::
 
 	Remove a single stash entry from the list of stash entries.
+	When no `<stash>` is given, it removes the latest one.
+	i.e. `stash@{0}`, otherwise `<stash>` must be a valid stash
+	log reference of the form `stash@{<revision>}`.
 
 create::
 
@@ -149,98 +184,6 @@ store::
 	reflog.  This is intended to be useful for scripts.  It is
 	probably not the command you want to use; see "push" above.
 
-OPTIONS
--------
--a::
---all::
-	This option is only valid for `push` and `save` commands.
-+
-All ignored and untracked files are also stashed and then cleaned
-up with `git clean`.
-
--u::
---include-untracked::
-	This option is only valid for `push` and `save` commands.
-+
-All untracked files are also stashed and then cleaned up with
-`git clean`.
-
---index::
-	This option is only valid for `pop` and `apply` commands.
-+
-Tries to reinstate not only the working tree's changes, but also
-the index's 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).
-
--k::
---keep-index::
---no-keep-index::
-	This option is only valid for `push` and `save` commands.
-+
-All changes already added to the index are left intact.
-
--p::
---patch::
-	This option is only valid for `push` and `save` commands.
-+
-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 ``Interactive Mode'' section of linkgit:git-add[1]
-to learn how to operate the `--patch` mode.
-+
-The `--patch` option implies `--keep-index`.  You can use
-`--no-keep-index` to override this.
-
---pathspec-from-file=<file>::
-	This option is only valid for `push` command.
-+
-Pathspec is passed in `<file>` instead of commandline args. If
-`<file>` is exactly `-` 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 `core.quotePath`
-(see linkgit:git-config[1]). See also `--pathspec-file-nul` and
-global `--literal-pathspecs`.
-
---pathspec-file-nul::
-	This option is only valid for `push` command.
-+
-Only meaningful with `--pathspec-from-file`. Pathspec elements are
-separated with NUL character and all other characters are taken
-literally (including newlines and quotes).
-
--q::
---quiet::
-	This option is only valid for `apply`, `drop`, `pop`, `push`,
-	`save`, `store` commands.
-+
-Quiet, suppress feedback messages.
-
-\--::
-	This option is only valid for `push` command.
-+
-Separates pathspec from options for disambiguation purposes.
-
-<pathspec>...::
-	This option is only valid for `push` command.
-+
-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.
-+
-For more details, see the 'pathspec' entry in linkgit:gitglossary[7].
-
-<stash>::
-	This option is only valid for `apply`, `branch`, `drop`, `pop`,
-	`show` commands.
-+
-A reference of the form `stash@{<revision>}`. When no `<stash>` is
-given, the latest stash is assumed (that is, `stash@{0}`).
-
 DISCUSSION
 ----------