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命令的奥秘。