工做除了开发最新的版本以外还要对原来的版本作例行的维护,修修补补。因而有了在两个分支之间游走切换的问题,最新改版的代码在分支 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”,你的搁置的代码就回来了。
参考: