summaryrefslogtreecommitdiffhomepage
path: root/git.html.markdown
diff options
context:
space:
mode:
authorLOZORD <ljrudberg@gmail.com>2014-11-24 19:32:40 -0600
committerLOZORD <ljrudberg@gmail.com>2014-11-24 19:32:40 -0600
commit3a8b9f0fc5397fb824cb49ecf6efd4a0c916b339 (patch)
tree5d4070bfdf7410cd2d4c1f0aeef28e8d647c671a /git.html.markdown
parent8d76e20278dc5cdfe404be4a8db12c2313273eac (diff)
Added 'git stash'!
Diffstat (limited to 'git.html.markdown')
-rw-r--r--git.html.markdown51
1 files changed, 50 insertions, 1 deletions
diff --git a/git.html.markdown b/git.html.markdown
index 618d1906..e064122d 100644
--- a/git.html.markdown
+++ b/git.html.markdown
@@ -334,6 +334,55 @@ $ git push -u origin master
$ git push
```
+### stash
+
+Stashing takes the dirty state of your working directory and saves it on a
+stack of unfinished changes that you can reapply at any time.
+
+```bash
+# Let's say you've been doing some work in your git repo, but you want to pull from the remote.
+# Since you have dirty (uncommited) changes to some files, you are not able to run 'git pull'.
+# Instead, you can run 'git stash' to save your changes onto a stack!
+
+$ git stash
+Saved working directory and index state \
+ "WIP on master: 049d078 added the index file"
+ HEAD is now at 049d078 added the index file
+ (To restore them type "git stash apply")
+
+# Now you can pull!
+git pull
+# ...changes apply...
+
+# Now check that everything is OK
+
+$ git status
+# On branch master
+nothing to commit, working directory clean
+
+# You can see what 'hunks' you've stashed so far:
+# Since the 'hunks' are stored in a Last-In-First-Out stack
+# our most recent change will be at top
+$ git stash list
+stash@{0}: WIP on master: 049d078 added the index file
+stash@{1}: WIP on master: c264051 Revert "added file_size"
+stash@{2}: WIP on master: 21d80a5 added number to log
+
+# Now let's apply our dirty changes back by popping them off the stack
+# 'git stash apply' also works too
+$ git stash pop
+# On branch master
+# Changes not staged for commit:
+# (use "git add <file>..." to update what will be committed)
+#
+# modified: index.html
+# modified: lib/simplegit.rb
+#
+
+# Now you're good to go!
+
+[Additional Reading.](http://git-scm.com/book/en/v1/Git-Tools-Stashing)
+
### rebase (caution)
Take all changes that were committed on one branch, and replay them onto another branch.
@@ -396,4 +445,4 @@ $ git rm /pather/to/the/file/HelloWorld.c
* [GitGuys](http://www.gitguys.com/)
-* [Git - the simple guide](http://rogerdudler.github.io/git-guide/index.html) \ No newline at end of file
+* [Git - the simple guide](http://rogerdudler.github.io/git-guide/index.html)