Hg:删除最新提交

Mot*_*Mot 7 mercurial undo

我过去使用过Git而且我是一个Hg菜鸟:

我有以下存储库结构:

o [> default] commit A
|
o commit B
.
.
.
o <a-tag]
|
Run Code Online (Sandbox Code Playgroud)

我已经更新了提交,a-tag并提交了一些其他提交.我现在有

o [> default] commit C
|
o commit D
|
|  o [default] commit A
|  |
|  o commit B
|  .
|  .
|  .
| /
o <a-tag]
|
Run Code Online (Sandbox Code Playgroud)

现在(在推送之前)我意识到我有我的提交commit Ccommit D基于错误的提交.我怎样才能回到初始状态(无需重新克隆存储库)丢弃这些提交commit Ccommit D(吊坠git reset --hard a-tag)?

Rus*_*nko 8

您可以使用'strip'永久删除提交及其所有后代.在您的情况下,您需要指定"D"修订版的ID:

hg strip -r D
Run Code Online (Sandbox Code Playgroud)

注意:必须打开mq扩展名:

[extensions]
mq=
Run Code Online (Sandbox Code Playgroud)

Mercurial备份.hg/strip-backup中剥离的变更集的捆绑包,因此此操作相当安全.