git-stash man page on YellowDog

Man page or keyword search:  
man Server   18644 pages
apropos Keyword Search (all sections)
Output format
YellowDog logo
[printable version]

GIT-STASH(1)			  Git Manual			  GIT-STASH(1)

NAME
       git-stash - Stash the changes in a dirty working directory away

SYNOPSIS
       git-stash (list | show [<stash>] | apply [<stash>] | clear | drop [<stash>] | pop [<stash>])
       git-stash [save [<message>]]

DESCRIPTION
       Use git-stash 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 HEAD commit.

       The modifications stashed away by this command can be listed with
       git-stash list, inspected with git-stash show, and restored
       (potentially on top of a different commit) with git-stash apply.
       Calling git-stash without any arguments is equivalent to git-stash
       save. A stash is by default listed as "WIP on branchname ...", but you
       can give a more descriptive message on the command line when you create
       one.

       The latest stash you created is stored in $GIT_DIR/refs/stash; older
       stashes are found in the reflog of this reference and can be named
       using the usual reflog syntax (e.g. stash@{0} is the most recently
       created stash, stash@{1} is the one before it, stash@{2.hours.ago} is
       also possible).

OPTIONS
       save [<message>]
	      Save your local modifications to a new stash, and run git-reset
	      --hard to revert them. This is the default action when no
	      subcommand is given. The <message> part is optional and gives
	      the description along with the stashed state.

       list [<options>]
	      List the stashes that you currently have. Each stash is listed
	      with its name (e.g. stash@{0} is the latest stash, stash@{1} is
	      the one before, etc.), the name of the branch that was current
	      when the stash was made, and a short description of the commit
	      the stash was based on.

	      stash@{0}: WIP on submit: 6ebd0e2... Update git-stash documentation
	      stash@{1}: On master: 9cc0589... Add git-stash

	      The command takes options applicable to the git-log(1) command
	      to control what is shown and how.

       show [<stash>]
	      Show the changes recorded in the stash as a diff between the
	      stashed state and its original parent. When no <stash> is given,
	      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 stash
	      in patch form).

       apply [--index] [<stash>]
	      Restore the changes recorded in the stash on top of the current
	      working tree state. When no <stash> is given, applies the latest
	      one. The working directory must match the index.

	      This operation can fail with conflicts; you need to resolve them
	      by hand in the working tree.

	      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).

       clear  Remove all the stashed states. Note that those states will then
	      be subject to pruning, and may be difficult or impossible to
	      recover.

       drop [<stash>]
	      Remove a single stashed state from the stash list. When no
	      <stash> is given, it removes the latest one. i.e. stash@{0}

       pop [<stash>]
	      Remove a single stashed state from the stash list and apply on
	      top of the current working tree state. When no <stash> is given,
	      stash@{0} is assumed. See also apply.

DISCUSSION
       A stash is represented as a commit whose tree records the state of the
       working directory, and its first parent is the commit at HEAD when the
       stash was created. The tree of the second parent records the state of
       the index when the stash is made, and it is made a child of the HEAD
       commit. The ancestry graph looks like this:

	      .----W
	     /	  /
       -----H----I
       where H is the HEAD commit, I is a commit that records the state of the
       index, and W is a commit that records the state of the working tree.

EXAMPLES
       Pulling into a dirty tree
	      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 git pull will let you move forward.

	      However, there are cases in which your local changes do conflict
	      with the upstream changes, and git pull refuses to overwrite
	      your changes. In such a case, you can stash your changes away,
	      perform a pull, and then unstash, like this:

	      $ git pull
	      file foobar not up to date, cannot merge.
	      $ git stash
	      $ git pull
	      $ git stash apply

       Interrupted workflow
	      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:

	      $ git checkout -b my_wip
	      $ git commit -a -m "WIP"
	      $ git checkout master
	      $ edit emergency fix
	      $ git commit -a -m "Fix in a hurry"
	      $ git checkout my_wip
	      $ git reset --soft HEAD^

	      You can use git-stash to simplify the above, like this:

	      $ git stash
	      $ edit emergency fix
	      $ git commit -a -m "Fix in a hurry"
	      $ git stash apply

SEE ALSO
       git-checkout(1), git-commit(1), git-reflog(1), git-reset(1)

AUTHOR
       Written by Nanako Shiraishi <nanako3@bluebottle.com>

GIT
       Part of the git(7) suite

Git 1.5.5.2			  10/21/2008			  GIT-STASH(1)
[top]

List of man pages available for YellowDog

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net