工做除了開發最新的版本以外還要對原來的版本作例行的維護,修修補補。因而有了在兩個分支之間遊走切換的問題,最新改版的代碼在分支 new 上,舊版本的代碼在分支 old 上,我在 new 上開發了一半,突然有人給了我一個改進的需求,因而我要切換回 old 去修改代碼。在這個場景下,我摸索了三種方法:html
在 new 分支上把已經開發完成的部分代碼 commit 掉,不 push,而後切換到 old 分支修改代碼,作完了commit,全部分支互不影響,這是一個理想的方法。git
有時候寫了一半的 Golang 代碼,都還不能編譯經過的,就被叫去改另外一個分支的 bug 了。bash
在 new 分支上的時候在命令行輸入:app
git stash
或者工具
git stash save 「修改的信息"
這樣之後你的代碼就回到本身上一個 commit 了,直接 git stash 的話 git stash 的棧會直接給你一個 hash 值做爲版本的說明,若是用 git stash save 「修改的信息」,git stash 的棧會把你填寫的「修改的信息」做爲版本的說明。spa
接下來你回到 old 分支修改代碼完成,你又再回到 new 分支,輸入:.net
git stash pop
或者命令行
git stash list git stash apply stash@{0}
就能夠回到保存的版本了。git stash pop 的做用是將 git stash 棧中最後一個版本取出來,git stash apply stash@{0} 的做用是能夠指定棧中的一個版本,經過 git stash list 能夠看到全部的版本信息:code
stash@{0}: On order-master-bugfix: 22222 stash@{1}: On order-master-bugfix: 22222
而後你能夠選擇一個你須要的版本執行:orm
git stash apply stash@{0}
這時候你擱置的代碼就回來了。
有一些 IDE 工具提供了 shelve 的功能,shelve 的意思是「將…擱在一邊」,即把還沒寫完的代碼先擱在一邊。我開發都是使用 jetbrains 公司的 IDEA 和 PhpStorm,它們就提供了 shelve 的功能,方法:
首先在 IDE 的底部找到「Changes」,點開會有 local 的選項卡,選中你要擱置的代碼,點擊右鍵,選擇「Shelve Changes」,在提交的輸入框中輸入你的註釋,以便回來的時候識別你須要的版本,點擊「Shelve Changes」鍵便可。這時選項卡上會多一個「Shelf」的選項卡,裏面就有你擱置的代碼。
這時候你能夠去 old 分支修改代碼,改完了以後回到 new 分支,到「Shelf」選項卡下選擇你要恢復的代碼或者版本,點擊右鍵選擇「Unshelve Changes」,你的擱置的代碼就回來了。
參考: