我們使用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