Skip to content

Commit 7a564d8

Browse files
author
Matthew McCullough
committed
Merge pull request #53 from randomecho/issue-36-stash
Basic ropes on git stash command
2 parents 84c6374 + a48fc60 commit 7a564d8

File tree

2 files changed

+141
-1
lines changed

2 files changed

+141
-1
lines changed

_layouts/reference.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ <h3><a href="/basic">Basic Snapshotting</a></h3>
5151
<li><a href="/basic/#commit">commit</a></li>
5252
<li><a href="/basic/#reset">reset</a></li>
5353
<li><a href="/basic/#rm-mv">rm, mv</a></li>
54+
<li><a href="/basic/#stash">stash</a></li>
5455
</ul>
5556
</div>
5657

basic/index.html

Lines changed: 140 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -818,7 +818,146 @@ <h4>
818818
<p class="nutshell">
819819
<strong>In a nutshell</strong>,
820820
you run <code>git rm</code> to remove files from being tracked in Git. It
821-
will also remove them from your working directory.</p>
821+
will also remove them from your working directory.
822+
</p>
823+
824+
</div>
825+
</div>
826+
827+
<div class="box">
828+
<h2>
829+
<span class="docs">
830+
<a href="http://git-scm.com/docs/git-stash">docs</a> &nbsp;
831+
<a href="http://git-scm.com/book/en/Git-Tools-Stashing">book</a>
832+
</span>
833+
<a name="stash">git stash</a>
834+
<span class="desc">save changes made in the current index and working directory for later</span>
835+
</h2>
836+
837+
<div class="block">
838+
839+
<p>You're in the middle of some changes but something comes up that you
840+
need to jump over to, like a so-urgent-right-now bugfix, but don't want
841+
to commit or lose your current edits. <code>git stash</code> is there for you.
842+
</p>
843+
844+
<h4>
845+
git stash
846+
<small>add current changes to the stack</small>
847+
</h4>
848+
849+
<p>Stashing takes the current state of the working directory and index,
850+
puts it on a stack for later, and gives you back a clean working directory.
851+
It will then leave you at the state of the last commit.
852+
</p>
853+
854+
<pre>
855+
<b>$ git status -s</b>
856+
<span class="red">M</span> hello.rb
857+
<b>$ git stash</b>
858+
Saved working directory and index state WIP on master: 5857ac1 hello with a flower
859+
HEAD is now at 5857ac1 hello with a flower
860+
<b>$ git status</b>
861+
# On branch master
862+
nothing to commit (working directory clean)
863+
</pre>
864+
865+
<h4>
866+
git stash list
867+
<small>view stashes currently on the stack</small>
868+
</h4>
869+
870+
<p>It's helpful to know what you've got stowed on the stash and this is where
871+
<code>git stash list</code> comes in. Running this command will display a queue
872+
of current stash items.
873+
</p>
874+
875+
<pre>
876+
<b>$ git stash list</b>
877+
stash@{0}: WIP on master: 5857ac1 hello with a flower
878+
</pre>
879+
880+
<p>The last item added onto the stash will be referenced by
881+
<code>stash@{0}</code> and increment those already there by one.
882+
</p>
883+
884+
<pre>
885+
<b>$ vim hello.rb</b>
886+
<b>$ git commit -am 'it stops raining'</b>
887+
[master ee2d2c6] it stops raining
888+
1 files changed, 1 insertions(+), 1 deletions(-)
889+
<b>$ vim hello.rb</b>
890+
<b>$ git stash</b>
891+
Saved working directory and index state WIP on master: ee2d2c6 it stops raining
892+
HEAD is now at ee2d2c6 it stops raining
893+
<b>$ git stash list</b>
894+
stash@{0}: WIP on master: ee2d2c6 it stops raining
895+
stash@{1}: WIP on master: 5857ac1 hello with a flower
896+
</pre>
897+
898+
<h4>
899+
git stash apply
900+
<small>grab the item from the stash list and apply to current working directory</small>
901+
</h4>
902+
903+
<p>When you're ready to continue from where you left off, run the
904+
<code>git stash apply</code> command to bring back the saved changes
905+
onto the working directory.
906+
</p>
907+
908+
<pre>
909+
<b>$ git stash apply</b>
910+
# On branch master
911+
# Changes not staged for commit:
912+
# (use "git add &lt;file>..." to update what will be committed)
913+
# (use "git checkout -- &lt;file>..." to discard changes in working directory)
914+
#
915+
# <span class="red">modified: hello.rb</span>
916+
#
917+
no changes added to commit (use "git add" and/or "git commit -a")
918+
</pre>
919+
920+
<p>By default it will reapply the last added stash item to the working
921+
directory. This will be the item referenced by <code>stash@{0}</code>.
922+
You can grab another stash item instead if you reference it in the arguments
923+
list. For example, <code>git stash apply stash@{1}</code> will apply the item
924+
referenced by <code>stash@{1}</code>.
925+
</p>
926+
927+
<p>If you also want to remove the item from the stack at the same time,
928+
use <code>git stash pop</code> instead.
929+
</p>
930+
931+
<h4>
932+
git stash drop
933+
<small>remove an item from the stash list</small>
934+
</h4>
935+
936+
<p>When you're done with the stashed item and/or want to remove it from the
937+
list, run the <code>git stash drop</code> command. By default this will
938+
remove the last added stash item. You can also remove a specific item if
939+
you include it as an argument.
940+
</p>
941+
942+
<p>In this example, our stash list has at least two items, but we want
943+
to get rid of the item added before last, which is referenced by
944+
<code>stash@{1}</code>.
945+
</p>
946+
947+
<pre>
948+
<b>$ git stash drop stash@{1}</b>
949+
Dropped stash@{1} (0b1478540189f30fef9804684673907c65865d8f)
950+
</pre>
951+
952+
<p>If you want to remove of all the stored items, just run
953+
the <code>git stash clear</code> command. But only do this if you're
954+
sure you're done with the stash.
955+
</p>
956+
957+
<p class="nutshell">
958+
<strong>In a nutshell</strong>, run <code>git stash</code> to quickly save
959+
some changes that you're not ready to commit or save, but want to come
960+
back to while you work on something else.
822961
</p>
823962

824963
</div>

0 commit comments

Comments
 (0)