为什么 hg 回滚不起作用,我如何在本地和 Bitbucket 上回滚?

Why did hg rollback not work, and how do I rollback both locally and on Bitbucket?

我使用 Mercurial,我会立即将每个提交推送到 BitBucket。

我最近提交了我的本地存储库,并通过 hg push 将其推送到 BitBucket。后来,我意识到我不应该做出那个承诺,所以我尝试:

$ hg rollback
repository tip rolled back to revision 37 (undo push-response)

但是Xcode中的文件没有改变。我关闭 Xcode window 并重新打开它,但没有任何变化。我试图在 Bitbucket 中恢复回滚,但这也不起作用:

$ hg push ssh://hg@bitbucket.org/myuser/myproject
pushing to ssh://hg@bitbucket.org/myuser/myproject
searching for changes
no changes found

如何在本地和 BitBucket 中回滚?我希望代码回到错误提交之前的状态。

您不能在 Bitbucket 中回滚,您必须从存储库中删除更改。
在 Bitbucket 中,转到存储库 Settings,然后 Strip commits。输入提交的哈希 ID 并单击 预览剥离 ,然后如果您很高兴它将剥离正确的提交,您可以确认它。

现在您可以删除或编辑本地副本中的提交。
现在不推荐 hg rollback,如果你可以修复提交,你可以在再次推送之前使用 hg commit --amend 更新它。

回滚将删除提交并在您的工作目录中将更改的文件保留为未提交状态。从您收到的回滚成功的消息来看,我不希望文件在 XCopy 中发生更改,因为它将更改留在您的工作目录中,但是如果您查看存储库的提示现在您的提交应该离开,如果您查看工作目录的状态,您应该有未提交的更改对应于您不需要的更改。
您应该能够 hg revert 任何您不想要的未提交的更改。

如果提交仍然存在,并且您想完全摆脱它并且根本不想保留代码,您可以使用 hg strip 删除它(您可能需要激活首先在 mercurial settigs 中进行 strip 扩展)。

Mercurial - Finding and fixing mistakes

Strip extension