From 3a8b9f0fc5397fb824cb49ecf6efd4a0c916b339 Mon Sep 17 00:00:00 2001 From: LOZORD Date: Mon, 24 Nov 2014 19:32:40 -0600 Subject: [PATCH] Added 'git stash'! --- git.html.markdown | 51 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) 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 ..." 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)