~bzr-pqm/bzr/bzr.dev

4634.99.1 by Naoki INADA
import doc-ja rev90
1
間違いを取り消す
2
================
3
4
間違いは起きる
5
---------------
6
7
Bazaarは下記で説明されるような間違いから簡単にリカバーできるように\
8
設計されています。
9
10
プロジェクトのリビジョンの履歴をドロップする
11
---------------------------------------------
12
13
思いがけず間違ったツリーをバージョン管理下に置いたとしても、 ``.bzr`` ディレクトリを削除するだけで済みます。
14
15
ファイルもしくはディレクトリの登録を解除する
16
---------------------------------------------
17
18
バージョン管理下に置きたくないファイルを思いがけず ``add`` コマンドで登録しても、
19
それを忘れるようにBazaarにそれを忘れさせるために ``remove`` コマンドを使用できます。
20
21
``remove`` は修正されたファイルが削除されないよに *安全に物事を行う* ために設計されています。たとえば::
22
23
  bzr add foo.html
24
  (oops - didn't mean that)
25
  bzr remove foo.html
26
27
このコマンドは修正されたもしくは未知のファイルについてはエラーを出力します。
28
ファイルを維持したいのであれば、 ``--keep`` オプションを使います。
29
代わりに、ファイルを削除したいのであれば、 ``--force`` オプションを使います::
30
31
  bzr add foo.html
32
  (oops - didn't mean that)
33
  bzr remove --keep foo.html
34
  (foo.html はディスクには残るけれども、bzrには登録されない)
35
36
一方で、未変更の ``TODO`` ファイルは登録が解除されエラー出力なしでディスクから削除されます::
37
38
  bzr add TODO
39
  bzr commit -m "added TODO"
40
  (hack, hack, hack - but don't change TODO)
41
  bzr remove TODO
42
  (TODO ファイルは削除される)
43
44
注: IDEもしくはオペレーティングシステムのファイルマネージャーを\
45
利用してファイルを削除する場合、 ``commit`` コマンドはそれを削除\
46
されるものとして暗黙のうちに扱います。
47
48
最後のコミット以降の変更を取り消す
49
----------------------------------
50
51
バージョン管理ツールを使う理由の1つは作業をしている間にツリーのステータスを楽に調べられることです。
52
最新の ``commit`` 以降の変更を廃棄することを決心したら、使うコマンドは ``revert`` です::
53
54
  bzr revert
55
56
事前の警告として、 実際にすべてが本当に廃棄されたことを確認するために
57
``bzr status`` と ``bzr diff`` を最初に使うことはよい習慣です。
58
59
最後のコミット以降のファイルへの変更を取り消す
60
-----------------------------------------------
61
62
最後のコミット以降の特定のファイルの変更を取り消したいが、ツリーの他のすべての変更を維持したい場合、
63
ファイルの名前を引数として ``revert`` に渡します::
64
65
  bzr revert foo.py
66
67
最後のコミットを取り消す
68
-------------------------
69
70
意図しないコミットをしてしまったら、取り消すために ``uncommit`` コマンドを使います::
71
72
  bzr uncommit
73
74
``revert`` とは異なり、 ``uncommit`` は作業のツリーの内容をそのままにします。
75
意図せずに間違ったエラーメッセージをコミットしてしまった場合、これは本当に重宝します::
76
77
  bzr commit -m "Fix bug #11"
78
  (damn - wrong bug number)
79
  bzr uncommit
80
  bzr commit -m "Fix bug #1"
81
82
コミットを取り消す別の理由は1つもしくは複数のファイルの追加を忘れたからというものです 。
83
これを避けるために、未知のファイルがツリーの中で見つかるとコミットがエラーになるように
84
``commit`` を ``commit --strict`` のエイリアスにする人もいます。
85
86
注: ``merge`` コマンドは次の章まで紹介しませんが、
87
``uncommit`` で追加するマージをリストアすることは無意味です。
88
(``uncommit`` の後で ``bzr status`` を実行するとこれらが表示されます)
89
``merge`` は履歴の前の方の指定したコミットだけを効率良く取り消すためにも使われます。
90
``merge`` に関する詳細な情報は
91
次の章の `変更をマージする <merging_changes.html>`_
92
とBazaarのユーザーリファレンスを参照してください。
93
94
複数のコミットを取り消す
95
------------------------
96
97
複数のコミットを取り消すためには -r オプションを使います::
98
99
  bzr uncommit -r -3
100
101
これを行うための理由が本当にいくつかの変更を破棄したいのであるなら、
102
``uncommit`` は作業ツリーを変更しないことを覚えておいてください:
103
タスクを完了させることと同じようにおそらく ``revert`` コマンドを実行する必要があります。
104
しかし多くの場合、履歴をそのままにしておき、最新のよい状態の内容を反映する
105
新しいリビジョンを追加する方が間違いなくベターです。
106
107
過去のバージョンの状態に戻す
108
-----------------------------
109
110
望まない変更を行ったが、コードがユーザーに公開されているのでコミットの取り消しが合理的ではない場合、
111
作業ツリーを望む状態に戻すために ``revert`` を利用できます::
112
113
  % bzr commit "Fix bug #5"
114
  Committed revision 20.
115
  (release the code)
116
  (hmm - bad fix)
117
  bzr revert -r 19
118
  bzr commit -m "Backout fix for bug #5"
119
120
この作業によってツリー全体をリビジョン19の状態に変更します。
121
それ以降は新しいコミットをしていなければおそらくこれがあなたのしたい唯一のことです。
122
そうであれば、 ``revert`` はこれらをきれいに消去します。
123
この場合、わるい修正を取り消す代わりに
124
`リバースチェリーピッキング <advanced_merging.html#reverse-cherrypicking>`_
125
を使う方がよいでしょう。
126
127
注: 19のような絶対的なリビジョン番号の代わりに、
128
負の数を使ってチップ(-1)と相対的なリビジョンを指定できます::
129
130
  bzr revert -r -2
131
132
タグを訂正する
133
----------------
134
135
早まってタグを定義したのなら、
136
``tag`` コマンドの ``--force`` オプションを使って再定義します::
137
138
  bzr tag 2.0-beta-1
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
142
143
タグをクリアする
144
-----------------
145
146
タグを定義したが使いたくないのであれば、削除するために、
147
``tag`` コマンドの ``--delete`` オプションを使うことができます::
148
149
  bzr tag 2.0-beta-4
150
  (oops, we're not releasing a 4th beta)
151
  bzr tag 2.0-beta-4 --delete
152