我使用一个 GUI 程序与我们的 SVN 存储库进行交互。很多时候我去提交十个不同的文件,但不小心只选择了一个并提交。然后,我必须对所有其他更改进行另一次提交。
有没有办法在跟踪程序中将这两个“重复”提交合并为一个带有单个消息的单个提交?
这很简单,但我很好奇这是否可能。
我使用一个 GUI 程序与我们的 SVN 存储库进行交互。很多时候我去提交十个不同的文件,但不小心只选择了一个并提交。然后,我必须对所有其他更改进行另一次提交。
有没有办法在跟踪程序中将这两个“重复”提交合并为一个带有单个消息的单个提交?
这很简单,但我很好奇这是否可能。
听起来它们不是“重复”提交。
听起来您有 10 个文件分别在两次提交中提交(如果我理解正确的话)。
我不知道您是否可以“取消提交”第一个文件,但您可以再次提交以将存储库“恢复”到您进行意外提交之前的位置。这将允许您在同一修订版中提交所有十个文件。
我不知道如何使用 GUI/IDE 来做到这一点。
从命令行你可以这样做:
在修订版 5000 中意外提交文件 A
创建一个补丁来恢复提交:
svn diff -r 5000:4999 > revert.patch
应用补丁:
补丁 -p0 < revert.patch
现在你的仓库是意外提交之前的位置
现在您可以一起提交所有十个文件
可能有很多方法(有些更简单)可以做到这一点。我相信这个答案会被否决!
一般来说,修订控制系统的想法是您不能返回并更改以前的提交——这将删除很多价值,因为您不能再保证修订控制系统中的内容就是您在时间。
在颠覆的情况下,您可以使用svnadmin
转储存储库,编辑转储然后将其恢复回来......但这对于具有边际价值的东西来说是很多工作。在我看来,一个更好的主意是获得一个更适合您的工作流程的前端,或者添加一些提交钩子来阻止您首先做出错误的提交。
据我所知,在 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