Git實戰手冊(三): stash解惑與妙用
阿新 • • 發佈:2018-09-07
列表 混合 com 但是 ati 它的 bus 代碼管理 項目 1. 初識
)。目前,status 如下:
。此處是個坑。
0. 介紹
- 教程所示圖片使用的是 github 倉庫圖片,網速過慢的朋友請移步原文地址
- 有空就來看看個人技術小站, 我一直都在
在實際項目開發中,總會遇到代碼寫到一半(沒法去打
commit
),去開啟新的分支 修復Bug 或者 增加功能 的情況。如果不處理,未修改的代碼就會被帶入臨時創建的新的分支,沒寫完的代碼 和 要修復的代碼混合在一起,絕對苦逼。而Git中的stash
就是用來對付這種情況。
1. 初識git stash
stash
在英文中的意思是:隱藏。在Git代碼管理的過程中,它的作用也是隱藏沒完成的代碼,防止它幹擾 別人 或者 新分支的工作。
關於git stash
,常用命令如下:
命令 | 作用 |
---|---|
git stash |
隱藏當前的工作現場, 此時, git status 的結果是 clean |
git stash list |
查看所有隱藏, 每一行的冒號前面的字符串就是標識此隱藏的id |
git stash apply <id> |
重新顯示標識為id的隱藏 |
git stash drop <id> |
git apply 恢復隱藏後, 需要手動刪除list列表中的記錄 |
2. 應用與實戰
假設:正當我在 master 分支上寫著文檔時候(沒有完成、沒有提交),同事發現 hello.py
這個腳本有問題,緊急報告給我進行修復。
收到報告,下意識就是開一個 debug 分支來處理bug。但是,現在的文檔沒完成,自然無法提交,又不能把沒提交的東西帶入到新創建的 debug 分支(執意如此,我也沒辦法 : )
為了達到目的,分為以下幾步:
- 隱藏修改:
git stash
: - 創建新分支:
git branch debug
: - 在
debug
分支上修復bug, 並且將修改添加到log中 : - 回到
master
分支, 合並debug
分支的修改, 並且刪除debug
分支 : - 重新顯示隱藏的
stash
,並且將其從stash list
列表中刪除 : - 然後就可以愉快地繼續做自己的事情啦!
3. 拓展閱讀
在實際生產過程中,難免會遇到多個 stash 的情況。此時,他們的id默認都是:stash{0}
, stash{1}
, stash{2}
... ...
當我們恢復一個 stash ,並且將它從 stash list 中移除的時候,在其下方的 stash 記錄的id會自動變小,以保證id是從0到n的連續自然數列。所以,當從 stash list 移除一個 stash 後,一些 stash 的 id 就會發生改變
Git實戰手冊(三): stash解惑與妙用