git stash 用處


關於Git Stash的詳細解釋,適用場合:
使用git的時候,我們往往使用branch解決任務切換問題,例如,我們往往會建一個自己的分支去修改和調試代碼, 如果別人或者自己發現原有的分支上有個不得不修改的bug,我們往往會把完成一半的代碼 commit提交到本地倉庫,然后切換分支去修改bug,改好之后再切換回來。這樣的話往往log上會有大量不必要的記錄。其實如果我們不想提交完成一半或者不完善的代碼,但是卻不得不去修改一個緊急Bug,那么使用'git stash'就可以將你當前未提交到本地(和服務器)的代碼推入到Git的棧中,這個時候stash命令就大有用處了,前提是我們的代碼沒有進行commit,哪怕你執行了add也沒關系,我們先執行git stash命令,什么意思呢?意思就是把當前分支所有沒有commit 的代碼先暫存起來,這個時候你再執行git status你會發現當前分支很干凈,幾乎看不到任何改動,你的代碼改動也看不見了,但其實是暫存起來了。執行git stash list你會發現此時暫存區已經有了一條記錄。這個時候你可以切換會其他分支,趕緊把bug修復好,然后發布。之后一切都解決了,你再切換回來繼續做你之前沒做完的功能,但是之前的代碼怎么還原呢?git stash apply你會發現你之前的代碼全部又回來了,就好像一切都沒發生過一樣,緊接着你最好需要把暫存區的這次stash記錄刪除,執行:git stash drop就把最近一條的stash記錄刪除了,是不是很方便?其實還有更方便的,你可以使用:git stash pop來代替apply命令,pop跟apply的唯一區別就是pop不但會幫你把代碼還原,還自動幫你把這條stash記錄刪除,省的自己再drop一次了,為了驗證你可以緊接着執行git stash list命令來確認是不是已經沒有記錄了。而且我們可以多次將未提交的代碼壓入到棧中,當你多次使用'git stash'命令后,你的棧里將充滿了未提交的代碼,這時候你會對將哪個版本應用回來有些困惑,'git stash list'命令可以將當前的Git棧信息打印出來,你只需要將找到對應的版本號,例如使用'git stash apply stash@{1}'就可以將你指定版本號為stash@{1}的工作取出來,當你將所有的棧都應用回來的時候,可以使用'git stash clear'來將棧清空。

常用git stash命令:
git stash: 備份當前的工作區的內容,從最近的一次提交中讀取相關內容,讓工作區保證和上次提交的內容一致。同時,將當前的工作區內容保存到Git棧中。
git stash save 'message':備份工作區內容,同時添加備注信息。
git stash save -a "messeag" :沒有加 -a 這個option選項,代碼開發可能是在原代碼上進行修改的。而對於在項目里加入了代碼新文件的開發來說,-a選項才會將新加入的代碼文件同時放入暫存區。
git stash apply: 從Git棧中讀取最近一次保存的內容,恢復工作區的相關內容。但是不會將該stash記錄刪除
git stash drop: 把最近的一條stash記錄刪除。
git stash pop: 從Git棧中讀取最近一次保存的內容,恢復工作區的相關內容。由於可能存在多個Stash的內容,所以用棧來管理,pop會從最近的一個stash中讀取內容並恢復,同時會刪除這條stash記錄,相當於git stash apply和git stash drop一起執行了。
git stash list: 顯示Git棧內的所有備份,可以利用這個列表來決定從那個地方恢復。
git stash clear: 清空Git棧,原來存儲的所以stash的節點都消失了。



作者:angeliur
鏈接:https://www.jianshu.com/p/3a56bc1bf419
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM