3

我使用一个 GUI 程序与我们的 SVN 存储库进行交互。很多时候我去提交十个不同的文件,但不小心只选择了一个并提交。然后,我必须对所有其他更改进行另一次提交。

有没有办法在跟踪程序中将这两个“重复”提交合并为一个带有单个消息的单个提交?

这很简单,但我很好奇这是否可能。

4

3 回答 3

2

听起来它们不是“重复”提交。

听起来您有 10 个文件分别在两次提交中提交(如果我理解正确的话)。

我不知道您是否可以“取消提交”第一个文件,但您可以再次提交以将存储库“恢复”到您进行意外提交之前的位置。这将允许您在同一修订版中提交所有十个文件。

我不知道如何使用 GUI/IDE 来做到这一点。

从命令行你可以这样做:

  • 在修订版 5000 中意外提交文件 A

  • 创建一个补丁来恢复提交:

    svn diff -r 5000:4999 > revert.patch

  • 应用补丁:

    补丁 -p0 < revert.patch

  • 现在你的仓库是意外提交之前的位置

  • 现在您可以一起提交所有十个文件

可能有很多方法(有些更简单)可以做到这一点。我相信这个答案会被否决!

于 2012-05-02T18:15:45.820 回答
0

一般来说,修订控制系统的想法是您不能返回并更改以前的提交——这将删除很多价值,因为您不能再保证修订控制系统中的内容就是您在时间。

在颠覆的情况下,您可以使用svnadmin转储存储库,编辑转储然后将其恢复回来......但这对于具有边际价值的东西来说是很多工作。在我看来,一个更好的主意是获得一个更适合您的工作流程的前端,或者添加一些提交钩子来阻止您首先做出错误的提交。

于 2012-05-02T18:15:46.750 回答
0

据我所知,在 Subversion 中没有直接的支持(例如与 git 相反)。但是,您可以撤消更改而不是进行新的提交。你可以参考这里: http ://svnbook.red-bean.com/en/1.2/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo

或者,如果您使用一些 GUI,例如乌龟,您可能会发现以下短文章很有趣:

http://markphip.blogspot.com/2007/01/how-to-undo-commit-in-subversion.html

于 2012-05-02T18:16:28.397 回答