Mercurial:从远程分支中删除变更集

Mig*_*ing 22 version-control mercurial dvcs git-amend

有没有办法从远程变更集中删除a,或删除整个变更集?我意外地将.war文件推送到远程仓库,我想将其删除.

Mar*_*ler 33

Mercurial非常努力保证您的数据安全,因此您通常无法更改历史记录.

话虽如此,Mercurial有许多扩展,无论如何都可以让你轻松改变历史.维基上有一个关于编辑历史页面.该页面还解释了后果.

在您的具体情况下,您必须问自己其他人是否已经取消了您的变更集?如果是这样,那么即使你删除它,它仍然会存在于他们的克隆中,你可能会更好地接受错误.

如果您决定将其删除,我建议hg clone您在没有它的情况下使用它.这是安全的方式,因为它总是会留下备份.如果您推[z]送到远程存储库:

[x] --- [y] --- [z]
Run Code Online (Sandbox Code Playgroud)

现在要删除它,然后登录到服务器并执行

hg clone -r y repo repo-without-z
Run Code Online (Sandbox Code Playgroud)

然后repo-without-z将包含所有更改[y]- 也就是说,[z]将被删除:

[x] --- [y]
Run Code Online (Sandbox Code Playgroud)

然后,您可以继续工作并推送新的变更集:

[x] --- [y] --- [w]
Run Code Online (Sandbox Code Playgroud)

如果我已经取消了[z]变更集,现在拉出来[w]我会在存储库中看到两个头:

            [w]
           /
[x] --- [y] --- [z]
Run Code Online (Sandbox Code Playgroud)

这本身并不危险 - 但人们可能会感到惊讶.如果我[z]从我的克隆中删除,我将最终得到与您相同的存储库.但是,如上所述,如果您有许多用户,这可能是不切实际的.

您还可以使用MQ扩展来就地删除变更集.这样你就不会成为一个新的克隆.

最后,如果您确定推送是服务器上最后一次操作,那么hg rollback可以用来删除最后一个事务.但如果您是唯一可以推送到存储库的人,请不要这样做,否则您最终可能会回滚另一个事务.

如果存储库位于Bitbucket上,则无法登录服务器.但Bitbucket最近在其网络界面上添加了条带功能.在"管理员"部分中查找"存储库管理".

  • 是的,Bitbucket备份了剥离的修订,备份计入您的配额:-(您可以删除Bitbucket上的存储库,使用相同的名称再次创建它,并从您的本地克隆推送. (4认同)

jes*_*ern 13

到位桶并为您提供在剥离捆绑(备份),而这并没有计入配额.它似乎这样做的原因只是因为我们没有使缓存键无效,指定您使用多少空间.

这是我们系统中的一个错误,并将得到纠正.在此之前,请放心,更改集已被删除,备份是免费的:-)


Mig*_*ing 4

我使用 hg mqueue 扩展来编辑历史记录。看来它起作用了。谢谢大家。