1. 程式人生 > >Git實戰手冊(三): stash解惑與妙用

Git實戰手冊(三): stash解惑與妙用

列表 混合 com 但是 ati 它的 bus 代碼管理 項目

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 分支(執意如此,我也沒辦法 : )

)。目前,status 如下:

技術分享圖片

為了達到目的,分為以下幾步:

  1. 隱藏修改:git stash : 技術分享圖片
  2. 創建新分支:git branch debug : 技術分享圖片
  3. debug分支上修復bug, 並且將修改添加到log中 : 技術分享圖片
  4. 回到master分支, 合並debug分支的修改, 並且刪除 debug 分支 : 技術分享圖片
  5. 重新顯示隱藏的stash,並且將其從stash list列表中刪除 : 技術分享圖片
  6. 然後就可以愉快地繼續做自己的事情啦!

3. 拓展閱讀

在實際生產過程中,難免會遇到多個 stash 的情況。此時,他們的id默認都是:stash{0}, stash{1}, stash{2} ... ...

當我們恢復一個 stash ,並且將它從 stash list 中移除的時候,在其下方的 stash 記錄的id會自動變小,以保證id是從0到n的連續自然數列。所以,當從 stash list 移除一個 stash 後,一些 stash 的 id 就會發生改變

。此處是個坑。

Git實戰手冊(三): stash解惑與妙用