プログラミング・IT・英語・数学とか

英検1級、TOEIC満点(990点)、セキュリティスペシャリスト、DBスペシャリスト、ネットワークスペシャリスト。英語とITとか。いろいろ試してみたことを書いていきます

bzrで間違ってuncommitしてしまったリビジョンを元に戻したいとき

DRTL

bzrtoolsをインストールし、bzr heads --all コマンドでrevidを特定し、bzr pull . -r revid:[戻したいrevid]でできる。

詳細

https://bzrinit.com/05.html#ununcommit の情報を補足した記事です。日本語での情報が見つからなかったため書きました)

以下のようにuncommitしてしまった例で話を進めます。
まず最初にリビジョンが1,2,3と3つあったとします。
概念図:「1 → 2 → 3」
コマンド結果:

[shohei@my-laptop bzrtoolstest]$ bzr log
------------------------------------------------------------
revno: 3
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:20:01 +0900
message:
rev3
------------------------------------------------------------
revno: 2
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:19:46 +0900
message:
rev2
------------------------------------------------------------
revno: 1
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:19:29 +0900
message:
rev1.

ここで間違って、2,3をuncommitしてしまったとします。
概念図:1 → 2 → 3
コマンド結果: 

[shohei@my-laptop bzrtoolstest]$ bzr uncommit -r 1
    2 Shohei Hagiwara 2019-03-09      rev2
    3 Shohei Hagiwara 2019-03-09      rev3
The above revision(s) will be removed.Uncommit these revisions? ([y]es, [n]o): yesYou can restore the old tip by running:  bzr pull . -r revid:shohei@localhost-20190309032001-co5i2nh7w14r1uha
[shohei@my-laptop bzrtoolstest]$ 

 (そして、間違いに気づかずにターミナルを閉じてしまい、revidがわからなくなってしまったとします・・・。)
ここから、2,3を戻したいとします。以下、詳細な手順です。

bzzrtoolsをインストール

ubuntuであれば以下でできます。

sudo add-apt-repository ppa:bzr/ppa
sudo apt-get update
sudo apt install bzrtools

他のOSの方法や公式手順は以下のサイトを参照ください。
http://wiki.bazaar.canonical.com/Download

 

bzr heads --allコマンドでrevidを特定

bzr log だとrev1ですが、bzr heads --allとするとリビジョン3のrevidが表示されていることが確認できます。

[shohei@my-laptop bzrtoolstest]$ bzr log -r -1
------------------------------------------------------------
revno: 1
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:19:29 +0900
message:
rev1.
[shohei@my-laptop bzrtoolstest]$ bzr heads --all
HEAD: revision-id: shohei@localhost-20190309032001-co5i2nh7w14r1uha (dead)
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:20:01 +0900
message:
rev3

 

bzr pull . -r revid:[戻したいrevid]で戻す

さきほどわかったrevision-idを使ってpullで戻します。

[shohei@my-laptop bzrtoolstest]$ bzr pull . -r revid:shohei@localhost-20190309032001-co5i2nh7w14r1uha
All changes applied successfully.
Now on revision 3.

念の為にbzr logで確認してみると、ちゃんとbranchのリビジョンが3に戻っているのが確認できます。

[shohei@my-laptop bzrtoolstest]$ bzr log -r -1
------------------------------------------------------------
revno: 3
committer: Shohei Hagiwara <shohei@localhost>
branch nick: bzrtoolstest
timestamp: Sat 2019-03-09 12:20:01 +0900
message:
rev3
[shohei@my-laptop bzrtoolstest]$