我使用GUI程序与SVN存储库进行交互。我去提交十个不同的文件时有很多次,但不小心只选择一个并提交它。然后,我必须使用我所有其他更改进行另一次提交。
有没有办法将这两个“重复”提交合并为一个提交,并在跟踪程序中显示一条消息?
这很微不足道,但我很好奇是否可能。
答案 0 :(得分:2)
这听起来不像是“重复”提交。
听起来你有两个提交单独提交的10个文件(如果我理解正确的话)。
我不知道你是否可以“取消提交”第一个文件,但你可以做另一个提交,将repo“恢复”到你意外提交之前的位置。这将允许您提交同一版本中的所有十个文件。
我不知道如何使用GUI / IDE。
从命令行可以这样做:
意外地在修订版5000中提交文件A
创建一个补丁来恢复提交:
svn diff -r 5000:4999> revert.patch
应用补丁:
patch -p0< revert.patch
现在你的回购就是意外提交之前的地方
现在您可以将所有十个文件一起提交
这可能有很多方法(更容易)。我相信这个答案会被低估!
答案 1 :(得分:0)
一般来说,修订控制系统的想法是你不能回过头来改变以前的提交 - 这会消除很多价值,因为你无法再保证修订控制系统中的内容是你实际的那时候。
在subversion的情况下,可以使用svnadmin
转储存储库,编辑转储然后再将其还原...但这对于某些事情来说是很多工作这是边际价值。听起来像一个更好的主意是获得一个更适合你的工作流程的前端,或者添加一些提交钩子,这些钩子会阻止你在一开始就做出错误的提交。
答案 2 :(得分: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