rebase
通常、コマンドとstrip
コマンドは、この種の履歴変更操作に非常に役立つツールであることがわかります。親の上にある悪いコミットの後に行われたすべての変更をリベースしてから、悪い変更セットを取り除くことができます。
あなた<bad>
が削除したい悪い変更セット<parent>
は、その親で<child>
あり、あなたが保持したい子であるとしましょう:
hg rebase -s <child> -d <parent>
hg strip <bad>
例:
$ hg log -G
@ changeset: 2:6d0685591967
| summary: after
|
o changeset: 1:fab6b3f4effa
| summary: bad
|
o changeset: 0:0233d1f3547c
summary: before
$ hg rebase -s 2 -d 0
saved backup bundle to .hg/strip-backup/6d0685591967-backup.hg
$ hg log -G
@ changeset: 2:b0fa9ee8533f
| parent: 0:0233d1f3547c
| summary: after
|
| o changeset: 1:fab6b3f4effa
|/ summary: bad
|
o changeset: 0:0233d1f3547c
summary: before
$ hg strip 1
saved backup bundle to .hg/strip-backup/fab6b3f4effa-backup.hg
$ hg log -G
@ changeset: 1:b0fa9ee8533f
| summary: after
|
o changeset: 0:0233d1f3547c
summary: before
ご覧のとおり、悪い変更セットはなくなりました。
rebase
とが機能するには、と拡張機能strip
を有効にする必要があることに注意してください。また、この履歴変更操作を実行する前に、必ずリポジトリのバックアップ コピーを作成してください。rebase
mq