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

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

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

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

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

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

EN

回答 17

Stack Overflow用户

回答已采纳

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

当我在工作副本中的一个任务中有未提交的更改,并且我需要切换到另一个任务时,我会做以下两件事之一:

  1. 为第二个任务检出新的工作副本。

  • 启动分支:

WHATEVER_I_WAS_WORKING_ON_BEFORE拷贝$ svn拷贝CURRENT_URL_OF_WORKING_COPY SOME_BRANCH工作拷贝$ svn开关SOME_BRANCH工作拷贝$ svn提交-m "work in progress“工作copy $ svn开关copy

我有一些脚本可以帮助你实现自动化。

票数 70
EN

Stack Overflow用户

发布于 2010-08-03 03:22:41

This blog post建议使用diff和patch。

  • git stash大概变成了svn diff > patch_name.patch; svn revert -R .
  • git stash apply变成了patch -p0 < patch_name.patch

请注意,这不会隐藏元数据更改或(我认为)目录创建/删除。(是的,与git不同,svn会从目录内容中单独跟踪这些内容。)

票数 353
EN

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提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1554278

复制
相关文章

相似问题

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