问题 如何撤消svn更新?


我修改了工作目录中的文件并进行了svn更新。更新执行时没有冲突。

我希望能够将工作目录内容恢复到svn更新之前的状态。

原因是因为我与共享的svn存储库并行维护一个本地git存储库。在执行svn更新之前,我忘了git提交我的本地更改。现在,我的工作目录包含与svn更新产生的更改相混淆的本地更改。如果我提交,所有更改将显示为一个原子更改。我希望他们能分开。如果我可以恢复更新并保留我在svn更新之前的工作目录的内容,我可以这样做。


5247
2017-10-08 12:55


起源

我以另一种方式解决了它。本地更改位于不受更新影响的文件中。因此,由于git阶段机制,我只提交本地修改的文件,然后在第二次提交中修改了由svn update修改的所有其他文件。我很幸运。 - chmike
是的,git阶段就是出路。即使是文件 是 受影响,你仍然可以使用 svn diff 和 git apply 拆除颠覆变化和你的变化。 - Jan Hudec
无论哪种情况,我都建议使用 git-svn 在未来。它可以可靠地处理导入和导出修订,并且还可以用作本地修补程序队列(您可以在本地分支上进行多次提交,并使用交互式rebase仅将其中一些提交到subversion)。 - Jan Hudec


答案:


这是不可能的。忘记更新前的状态。

您可以通过使用subversion diff来分隔更改 git apply 将它应用于索引,提交(您的更改)而不是提交所有内容(来自pull的更改)。

这是紧急解决方案。我建议你切换到 git-svn,将来会为你处理这类事情。


5
2017-10-08 13:16





我一直在打这个问题,它实际上并没有包含“如何撤消svn更新?”的简单答案。题。

因此,为了其他人的利益,在可解决的情况下,您只想回滚更新:

首先检查日志:

svn log | less

这将为您提供修订号(例如 957)你想回去。然后:

svn up -r 957

8
2018-06-14 05:51



这个答案忽略了修改后的工作目录的情况。 - Robert Pollak
真的@RobertPollak,但它回答了问题标题提出的问题...... - ErichBSchulz
Downvoting,因为这不回答原始问题(其第一句话包含有关修改文件的注释)。这将是另一个问题“如何更新到特定修订版”的答案。如果有修改过的文件,这个答案将不起作用,甚至没有提及它。 - Alex Che


执行“更新到版本”,因此您将本地文件更改为稳定版本,然后重新提交。这样你就会失去所有的局部变化。


2
2017-10-08 12:57



放弃我所有的本地更改是我想要避免的。 - chmike
显然,在您的情况下,如果本地更改的文件没有冲突,则此操作无效。所以,你很幸运! ;) 祝你今天愉快 - Joe Taras


这是针对linux用户的。

假设修改如下。

头 - 20 以前的修订版--18,17,15,14,10,9,8。

转到你的src目录。 使用 svn merge -r 17:18 $ url

$ url为你的svn基地。


0
2017-10-08 13:10





如果在更新期间发生任何冲突,则会在您的回收站中提供您的文件和修订文件的副本


-1
2017-11-02 18:37