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”中排除文件,但将它们保存在本地存储库中?

从 git 分支中删除文件但将其保留在另一个?

从 SVN 存储库中删除文件而不删除本地副本

sh 还原对已修改文件的更改/删除未跟踪文件/从存储库中删除文件,但保留文件的本地版本混帐

删除 git repo 中的文件夹? [复制]

没有作者颠覆 svn 提交