7
Bazaarは下記で説明されるような間違いから簡単にリカバーできるように
10
プロジェクトのリビジョンの履歴をドロップする
11
---------------------------------------------
13
思いがけず間違ったツリーをバージョン管理下に置いたとしても、 ``.bzr`` ディレクトリを削除するだけで済みます。
15
ファイルもしくはディレクトリの登録を解除する
16
---------------------------------------------
18
バージョン管理下に置きたくないファイルを思いがけず ``add`` コマンドで登録しても、
19
それを忘れるようにBazaarにそれを忘れさせるために ``remove`` コマンドを使用できます。
21
``remove`` は修正されたファイルが削除されないよに *安全に物事を行う* ために設計されています。たとえば::
24
(oops - didn't mean that)
27
このコマンドは修正されたもしくは未知のファイルについてはエラーを出力します。
28
ファイルを維持したいのであれば、 ``--keep`` オプションを使います。
29
代わりに、ファイルを削除したいのであれば、 ``--force`` オプションを使います::
32
(oops - didn't mean that)
33
bzr remove --keep foo.html
34
(foo.html はディスクには残るけれども、bzrには登録されない)
36
一方で、未変更の ``TODO`` ファイルは登録が解除されエラー出力なしでディスクから削除されます::
39
bzr commit -m "added TODO"
40
(hack, hack, hack - but don't change TODO)
44
注: IDEもしくはオペレーティングシステムのファイルマネージャーを\
45
利用してファイルを削除する場合、 ``commit`` コマンドはそれを削除\
49
----------------------------------
51
バージョン管理ツールを使う理由の1つは作業をしている間にツリーのステータスを楽に調べられることです。
52
最新の ``commit`` 以降の変更を廃棄することを決心したら、使うコマンドは ``revert`` です::
56
事前の警告として、 実際にすべてが本当に廃棄されたことを確認するために
57
``bzr status`` と ``bzr diff`` を最初に使うことはよい習慣です。
59
最後のコミット以降のファイルへの変更を取り消す
60
-----------------------------------------------
62
最後のコミット以降の特定のファイルの変更を取り消したいが、ツリーの他のすべての変更を維持したい場合、
63
ファイルの名前を引数として ``revert`` に渡します::
68
-------------------------
70
意図しないコミットをしてしまったら、取り消すために ``uncommit`` コマンドを使います::
74
``revert`` とは異なり、 ``uncommit`` は作業のツリーの内容をそのままにします。
75
意図せずに間違ったエラーメッセージをコミットしてしまった場合、これは本当に重宝します::
77
bzr commit -m "Fix bug #11"
78
(damn - wrong bug number)
80
bzr commit -m "Fix bug #1"
82
コミットを取り消す別の理由は1つもしくは複数のファイルの追加を忘れたからというものです 。
83
これを避けるために、未知のファイルがツリーの中で見つかるとコミットがエラーになるように
84
``commit`` を ``commit --strict`` のエイリアスにする人もいます。
86
注: ``merge`` コマンドは次の章まで紹介しませんが、
87
``uncommit`` で追加するマージをリストアすることは無意味です。
88
(``uncommit`` の後で ``bzr status`` を実行するとこれらが表示されます)
89
``merge`` は履歴の前の方の指定したコミットだけを効率良く取り消すためにも使われます。
91
次の章の `変更をマージする <merging_changes.html>`_
92
とBazaarのユーザーリファレンスを参照してください。
95
------------------------
97
複数のコミットを取り消すためには -r オプションを使います::
101
これを行うための理由が本当にいくつかの変更を破棄したいのであるなら、
102
``uncommit`` は作業ツリーを変更しないことを覚えておいてください:
103
タスクを完了させることと同じようにおそらく ``revert`` コマンドを実行する必要があります。
104
しかし多くの場合、履歴をそのままにしておき、最新のよい状態の内容を反映する
105
新しいリビジョンを追加する方が間違いなくベターです。
108
-----------------------------
110
望まない変更を行ったが、コードがユーザーに公開されているのでコミットの取り消しが合理的ではない場合、
111
作業ツリーを望む状態に戻すために ``revert`` を利用できます::
113
% bzr commit "Fix bug #5"
114
Committed revision 20.
118
bzr commit -m "Backout fix for bug #5"
120
この作業によってツリー全体をリビジョン19の状態に変更します。
121
それ以降は新しいコミットをしていなければ、おそらくこれがあなたのしたい唯一のことです。
122
新しいコミットをしている場合は、 ``revert`` はそれも消してしまいます。
124
`リバースチェリーピック <adv_merging.html#reverse-cherrypicking>`_
127
注: 19のような絶対的なリビジョン番号の代わりに、
128
負の数を使ってチップ(-1)と相対的なリビジョンを指定できます::
136
``tag`` コマンドの ``--force`` オプションを使って再定義します::
139
(oops, we're not yet ready for that)
140
(make more commits to include more fixes)
141
bzr tag 2.0-beta-1 --force
146
タグを定義したが使いたくないのであれば、削除するために、
147
``tag`` コマンドの ``--delete`` オプションを使うことができます::
150
(oops, we're not releasing a 4th beta)
151
bzr tag 2.0-beta-4 --delete