私もこの問題に出くわしました。私は2を作成しcommit
、両方のコミットをロールバックして削除したいと考えました。
$ hg rollback
ただしhg rollback
、2つのコミットではなく、最後のコミットにロールバックするだけです。当時、私はこれに気づかず、コードを変更しました。
hg rollback
1つのコミットをロールバックしただけだとわかったとき、私はを使用できることがわかりましたhg strip #changeset#
。そのため、私hg log -l 10
は最新の10個のコミットを見つけて、希望する適切なチェンジセットを取得していましたstrip
。
$ hg log -l 10
changeset: 2499:81a7a8f7a5cd
branch: component_engine
tag: tip
user: myname<myname@email.com>
date: Fri Aug 14 12:22:02 2015 +0800
summary: get runs from sandbox
changeset: 2498:9e3e1de76127
branch: component_engine
user: other_user_name<name@email.com>
date: Mon Aug 03 09:50:18 2015 +0800
summary: Set current destination to a copy incoming exchange
......
$ hg strip 2499
abort: local changes found
どういうabort: local changes found
意味ですか?つまり、hg
まだコミットされていないコードの変更が見つかりました。したがって、これを解決するには、hg diff
変更したコードを保存する必要がhg revert
ありhg strip #changeset#
ます。ちょうどこのような:
$ hg diff > /PATH/TO/SAVE/YOUR/DIFF/FILE/my.diff
$ hg revert file_you_have_changed
$ hg strip #changeset#
上記を行った後patch
、diffファイルを作成し、コードをプロジェクトに追加し直すことができます。
$ patch -p1 < /PATH/TO/SAVE/YOUR/DIFF/FILE/my.diff