最近遇到一個問題,事情是這樣子的,剛剛接到客戶說他的項目有問題,於是就打開本地的源碼查看經過排查確定了問題,於是就開始進行修正工作
將問題修復好准備提交到git的時候發現當前的分支是不對的,但問題是我已經在當前分支了作了大量修改,如果要切換分支則必須先要將修改過的文件先提交
那么現在問題來了:如何在不提交commit的情況下來切換分支呢?
最后通過查看Pro Git文檔了解到Git中有一個stash功能可以實現
6.3 儲藏(Stashing)
經常有這樣的事情發生,當你正在進行項目中某一部分的工作,里面的東西處於一個比較雜亂的狀態,而你想轉到其他分支上進行一些工作。問題是,你不想提交進行了一半的工作,否則以后你無法回到這個工作點。解決這個問題的辦法就是git stash命令。
“‘儲藏”“可以獲取你工作目錄的中間狀態——也就是你修改過的被追蹤的文件和暫存的變更——並將它保存到一個未完結變更的堆棧中,隨時可以重新應用。
因為之前沒有使用過此功能,特意做了個測試
首
先 先在test分支修改了test2.txt文件
修改完成后發現該修改不應該在test分支了於是將所有的更改先儲藏(stash)起來
然后切換到相應的分支(新建了test2分支)並從stash中取出之前的修改
然后再test2分支中commit所有的修改
因為儲藏會產生兩個分支記錄,所以提交歷史看起來亂七八糟的,所以將之前的儲藏分支刪除(刪除后干凈多好)
完成,合並分支等操作

使用了stash的分支圖
刪除stash后的提交歷史
參考:
