# Git - stash 暫存檔案 有時候我們在團隊協作的時候,程式寫到一半,被叫去做其他的分支,此時努力的心血想要存起來,但又不想要另外 commit 一筆紀錄,此時就可以使用暫存的方式將變更的程式碼存起來! ## git stash ```htmlembedded= <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h1>hello world!</h1> </body> </html> ``` 假使我們目前 HTML 檔案有一行 h1 如上,我們給他進行一些編輯 ```htmlembedded= <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h1>hello world! Gene!</h1> </body> </html> ``` 忽然PM跟你說另一個分支需要馬上協助修正問題,此時你做到一半的心血想要暫存起來,我們就使用 **git stash** 語法 ``` git design1@DESKTOP-2SJKDSH MINGW64 ~/Desktop/gitDemo (master) $ git stash Saved working directory and index state WIP on master: 8121645 v1 ``` 暫存後會發現剛編輯的東西都會不見,回到你編輯前的模樣 ```htmlembedded= <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h1>hello world!</h1> </body> </html> ``` ## git stash list 而我編輯的東西跑到哪去了呢? 這時想查詢我的暫存檔有哪些可以使用指令 **git stash list** 查詢 ```git design1@DESKTOP-2SJKDSH MINGW64 ~/Desktop/gitDemo (master) $ git stash list stash@{0}: WIP on master: 8121645 v1 ``` ## git stash pop 好了! 我現在忙完其他事情後要回到先前暫存的進度了,此時我可以使用 **git stash pop** 指令將我的暫存給找回來 ```git design1@DESKTOP-2SJKDSH MINGW64 ~/Desktop/gitDemo (master) $ git stash pop On branch master 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: index.html no changes added to commit (use "git add" and/or "git commit -a") Dropped refs/stash@{0} (fdff435139c6f5539d35a9117746cbe06f8d2f0b) ``` 輸入完指令後,你看所有程式碼又都找回來了! ```htmlembedded= <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h1>hello world! Gene!</h1> </body> </html> ``` 其他指令用來刪除暫存 ## git stash drop 用來刪除最近的一筆暫存 ## git stash clear 刪除所有暫存 ###### tags: `Git`