git stash常用指令

我们使用git时,我们在自己分支上对某些文件做了修改,突然需要从其他分支如master分支拉取最新代码到自己分支上,或者需要切换到其他分支上,由于已有一些文件被修改,这些操作都做不了,会报错。这是就要用到stash了,stash就是暂存区的意思,可以把我们做的修改先放到暂存区,然后就可以做其他操作,比如上面提到的那两种。下面是git stash 相关指令

git stash 或者git stash push :将代码修改部分放入暂存区

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash push
Saved working directory and index state WIP on develop-zhy: dfedff9 Add files via upload

git stash list :查看所有暂存记录

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash list

stash@{0}: WIP on develop-zhy: dfedff9 Add files via upload
stash@{1}: WIP on develop-zhy: dfedff9 Add files via upload

git stash pop:弹出栈顶的一条记录,即stash@{0},同时暂存区删除这条记录

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash pop
On branch develop-zhy
Your branch is up to date with 'origin/develop-zhy'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   js/index.js

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (834a5055eea91738c5b74e8e122042af33d365f1)

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash list
stash@{0}: WIP on develop-zhy: dfedff9 Add files via upload

git stash show :查看栈顶的一条stash记录保存的文件

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash show
 js/index.js | 1 -
 1 file changed, 1 deletion(-)

git stash show -p:查看栈顶的一条stash记录保存文件修改的具体的代码,可以看到index.js文件删除了一行空格

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash show -p
diff --git a/js/index.js b/js/index.js
index 9383fc4..430d1e4 100644
--- a/js/index.js
+++ b/js/index.js
@@ -11,7 +11,6 @@ var index=0;
 var imgs;
 function init(){
     imgs=new Array(7);
-
     for(var i=0;i<imgs.length;i++){
         imgs[i]=new Image();
     }

git stash show stash@{n} 或git stash show stash@{n} -p : 查看堆栈里某条记录保存的修改的文件以及改动点

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash list
stash@{0}: WIP on develop-zhy: dfedff9 Add files via upload
stash@{1}: WIP on develop-zhy: dfedff9 Add files via upload

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash show stash@{1}
 js/index.js | 1 -
 1 file changed, 1 deletion(-)

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash show stash@{1} -p
diff --git a/js/index.js b/js/index.js
index 9383fc4..430d1e4 100644
--- a/js/index.js
+++ b/js/index.js
@@ -11,7 +11,6 @@ var index=0;
 var imgs;
 function init(){
     imgs=new Array(7);
-
     for(var i=0;i<imgs.length;i++){
         imgs[i]=new Image();
     }

git stash save "注释信息":类似于git stash指令,不同点是,git stash save指令可以给stash记录自定义注释,而git stash是默认注释

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash save "stash test1"
Saved working directory and index state On develop-zhy: stash test1

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash list
stash@{0}: On develop-zhy: stash test1
stash@{1}: WIP on develop-zhy: dfedff9 Add files via upload

git stash apply stash@{n}:对当前分支应用某条stash记录,但是不会删除该条记录,stash列表里还有这条记录;要删除该条记录,就要用到git stash drop 指令了

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash list
stash@{0}: On develop-zhy: stash test1
stash@{1}: WIP on develop-zhy: dfedff9 Add files via upload

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash apply stash@{1}
On branch develop-zhy
Your branch is up to date with 'origin/develop-zhy'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   js/index.js

no changes added to commit (use "git add" and/or "git commit -a")

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash list
stash@{0}: On develop-zhy: stash test1
stash@{1}: WIP on develop-zhy: dfedff9 Add files via upload

git stash drop :在堆栈中删除栈顶记录

git stash drop stash@{n}:在堆栈中删除某条记录

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash drop stash@{1}
Dropped stash@{1} (69903b4c880fb5e285a31f9fcb325f6e098f615b)

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash list
stash@{0}: On develop-zhy: stash test1

git stash clear: 清空所有stash记录,通过git stash list 查询已经没有stash记录了

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash clear

USER /e/workspace/projects/EAlbum (develop-zhy)
$ git stash list

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章