首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >暂时搁置Subversion中未提交的更改(就像"git-stash")

暂时搁置Subversion中未提交的更改(就像"git-stash")
EN

Stack Overflow用户
提问于 2009-10-12 12:26:15
回答 11查看 91.9K关注 0票数 326

在编写存储在Subversion代码库中的软件时,我经常修改一些文件,然后注意到我想为主要工作做一些准备工作。例如,在实现新功能时,我注意到一些重构可能会对我有所帮助。

为了不混淆两个不相关的更改,在这些情况下,我想“隐藏”我的更改,即恢复到存储库版本,做一些其他更改,提交这些更改,然后“取回”我的更改。

git-stash正是允许这样做的。有没有什么方法可以通过Subversion直接实现,也可以通过一些插件或脚本实现。Eclipse插件也不错。

EN

回答 11

Stack Overflow用户

发布于 2009-10-12 12:35:56

您可以使用svn diff将当前更改存储到补丁文件中,然后恢复您的工作副本:

代码语言:javascript
复制
svn diff > stash.patch
svn revert -R .

在实现了准备功能之后,您可以使用patch实用程序应用您的补丁:

代码语言:javascript
复制
patch < stash.patch

正如其他人所指出的,这将不适用于svn:properties和树操作(添加、删除、重命名文件和目录)。

二进制文件也会产生问题,我不知道patch (或者本例中的TortoiseSVN )是如何处理这些问题的。

票数 196
EN

Stack Overflow用户

发布于 2009-10-12 12:34:48

最简单的方法是使用临时分支,如下所示:

代码语言:javascript
复制
$ svn copy ^/trunk ^/branches/tempbranch
$ svn switch ^/branches/tempbranch
$ svn commit -m "Stashed"
$ svn switch ^/trunk
$ ... hack away in trunk ...
$ svn commit -m "..."
$ svn merge ^/branches/tempbranch .
$ svn rm ^/branches/tempbranch
$ ... continue hacking

这可以(也许应该)放在一个脚本中,如果更有规律地完成的话。

票数 43
EN

Stack Overflow用户

发布于 2010-08-03 03:18:39

我不知道只用svn就能做到这一点的简单方法。老实说,我建议使用git-svn制作一个git repo,作为svn的工作副本,并使用git stash。只需将git pull替换为git svn rebase,将git push替换为git svn dcommit,您实际上可以保留90%的git工作流程,并且仍然可以与svn服务器通信。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1554278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档