2.9 工作进度保存
如果在工作区的修改尚未完成时忽然有一个紧急的任务,需要从一个干净的工作区开始新的工作,或要切换到别的分支进行工作,那么如何保存当前尚未完成的工作进度呢?
1.SVN的解决方案
如果版本库规模不大,最好重新检出一个新的工作区,在新的工作区进行工作。否则,可以执行下面的操作。
$svn diff>/path/to/saved/patch.file
$svn revert-R
$svn switch<new_branch>
在新的分支中工作完毕后,再切换回当前分支,将补丁文件重新应用到工作区。
$svn switch<original_branch>
$patch-p1</path/to/saved/patch.file
但是切记SVN的补丁文件不支持二进制文件,这种操作方法可能会丢失对二进制文件的更改!
2.Git的解决方案
Git提供了一个可以保存和恢复工作进度的命令git stash。这个命令非常方便地解决了这个难题。
在切换到新的工作分支之前执行git stash保存工作进度,工作区就会变得非常干净,然后就可以切换到新的分支中了。
$git stash
$git checkout<new_branch>
新的工作分支修改完毕后,再切换回当前分支,调用git stash pop命令则可恢复之前保存的工作进度。
$git checkout<orignal_branch>
$git stash pop
本书第2篇第9章会为您揭开git stash命令的奥秘。