@@ -818,7 +818,146 @@ <h4>
818
818
< p class ="nutshell ">
819
819
< strong > In a nutshell</ strong > ,
820
820
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 >
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 <file> ..." to update what will be committed)
913
+ # (use "git checkout -- <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.
822
961
</ p >
823
962
824
963
</ div >
0 commit comments