首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >暂时搁置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

Stack Overflow用户

发布于 2021-01-20 20:06:38

我想对上面提到的所有解决方案做一个总结,因为在这个问题下它是如此混乱。一些高票数的答案是模棱两可的,我花了相当多的时间来证明答案的一部分是真的还是假的。

解决方案:

  1. 检出新的工作副本并在新副本中工作。(最简单、最安全的方法)
  2. 创建一个分支->切换到新的分支-> blablabla (有人说这会在SVN服务器中产生一些垃圾)
  3. 创建一个修补程序->恢复工作拷贝->修补程序(如果您没有任何未添加或删除的文件,效果很好)
  4. 使用shelve (见下文)

我试过1. 2.3.

1.是最简单、最安全的方法。如果您想节省时间,请使用此解决方案。我知道这并不优雅。

3.不是我的选择,因为:

  • 您可以使用未添加的文件和对现有文件的更改创建补丁。但在创建补丁后,它不会删除那些未添加的文件。那该怎么办呢?我必须创建一个补丁(选择未添加的文件) -> revert working copy -> 手动删除所有未添加的文件。这与git stash -u的工作原理完全不同。

4. shelve将是最优雅的方式,也是与git stash -u最相似的方式。

添加未添加/未跟踪的文件-> shelve -> done。

看见?与git stash -u相比,唯一的区别是您必须先添加未添加的文件,然后再添加shelve

测试环境:

我正在测试所有那些使用Windows Tortoise SVN客户端与网络共享副本(SAMBA)和由Windows Tortoise SVN客户端创建的本地repos的客户端。

因此,我不知道如果您使用SVN服务器,事情会有什么不同,这与local share不同。但我猜shelve可以在任何地方工作,因为它是一个本地操作/特性。

票数 1
EN
查看全部 17 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1554278

复制
相关文章

相似问题

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