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