我正在使用Mercury VCS,我误推了3次提交,但我希望它们撤消,这可以实现吗?
我很确定没有任何更改会传播到我推送到的存储库中的任何人,因此我相信这不会破坏任何人的代码...

我已经尝试过hg回滚,但是自从我推送之后,我无法以正确的方式撤消任何操作。我也知道hg退出,但是我不确定是否应该根据需要使用它。

谢谢!

编辑

这是图形日志,我忘了提到一些提交是合并的一部分,但它们也需要撤消...

tip
|
a
| \
|   b
| /
c
|
d

我需要将小费返回到c或d,如果由于合并而没有其他方法可以防止这种情况发生...

最佳答案

如果已经推送,那么现在您只能做两件事:

1)如果您能够删除中央存储库并用另一个存储库替换:
您可以克隆中央存储库,但是告诉Mercurial to clone only up to changeset "c"
然后,您可以使用这个存储库(没有错误的更改),并用它替换“旧的”中央存储库(确实有错误的更改)。

缺点:如果有人已经撤消了不需要的提交,然后又再次推送,则他们又在存储库中了。
因此,您需要确保没有人取消错误,或者每个人都删除了自己的克隆。

2)如果无法使用选项1,则可以使用 hg backout 撤消错误更改的影响-而不更改更改集本身。
从链接引用:



因此,三个错误的变更集将保留在存储库中,会添加另外三个,它们每个还原了三个错误的变更集之一的影响。
如果您这样做,那么其他人是否已经提出了错误的更改都没关系……只要他也提出了三个“回退”更改集,一切就可以了。

关于mercurial - Mercurial 撤消三 Mercurial push ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9233183/

10-13 07:19