SVN 从存储库中删除更改,但将它们保留在我的结帐中?
Posted
技术标签:
【中文标题】SVN 从存储库中删除更改,但将它们保留在我的结帐中?【英文标题】:SVN remove changes from repository, but keep them in my checkout? 【发布时间】:2010-03-05 20:55:04 【问题描述】:我有一些文件是更新的一部分,它们在准备好之前被错误地提交到主干。有没有办法“撤消”此签出并将存储库回滚一个版本,同时仍将更改的文件保留在我的签出中?
我在 Windows XP 上使用 tortiseSVN 1.6.5 版,如果这有什么不同的话。
示例:我更新了一个文件,现在是修订版 659,此文件的先前版本是 600。我想在结帐时保留版本 659,但将当前版本 600 再次设为最新版本(即版本660)。
我尝试复制当前版本,将常规版本回滚到 600,然后尝试将其提交回来,但它告诉我没有要提交的更改。
【问题讨论】:
【参考方案1】:我通常将我想要保留的文件复制到一个临时位置,进行回滚,然后将保留的文件复制回......不过,据我所知,我只是采用简单的方法,还有更好的方法在那里。
【讨论】:
【参考方案2】:您需要reverse merge,而不是旧版本的更新。
假设您刚刚提交(并且想要回滚)的修订版本是 42。
# rollback
svn merge -c -42
svn commit
# now r43 is good but we want r42's version of foo.c in our working copy
svn merge -c -43 foo.c
【讨论】:
【参考方案3】:理想情况下,您会使用“更新到修订版”,它将您的工作副本恢复到指定的修订号,之后您可以提交回来。为简单起见,我会在复制您当前的工作目录后执行此操作,然后在更新后将副本移回。
【讨论】:
这行不通;您不能在更新到旧版本后提交。您必须进行反向合并,否则 SVN 会说没有要提交的更改。更新到旧版本不算作更改。 你说得对,迈克尔,我的脑筋急转弯。在此处使用 Tortoise 执行此操作的完整详细信息:coderenaissance.com/2008/11/…以上是关于SVN 从存储库中删除更改,但将它们保留在我的结帐中?的主要内容,如果未能解决你的问题,请参考以下文章
git - 是不是可以从“git push”中排除文件,但将它们保存在本地存储库中?