現在のブランチの末尾からリビジョンを削除する。
ワーキングツリーに影響を与えずに、現在のブランチの末尾からリビジョンを削除する。
分散型バージョン管理システム(分散型リポジトリと集中型リポジトリを参照)において、これらのコマンドは現在のブランチを以前のリビジョンに戻すための手段を提供します。vc-delete-revisions-from-end
はリビジョンの入力を求め、その後、ブランチの末尾から指定したリビジョン(ただし当該リビジョン自体は含まない)までのすべてのリビジョンを削除します。このとき、そのブランチは指定したリビジョンまで巻き戻されたと言います。
このコマンドは、リビジョンによる変更をワーキングツリーから削除します。そのため、未コミットの変更がある場合は、まずそれらを元に戻す必要があります(バージョン管理操作の取り消しを参照)。このコマンドは、必要に応じてその操作を促すプロンプトを表示します。プレフィックス引数を指定した場合、Emacsはプロンプトを表示せずに未コミットの変更を削除します。
リビジョンを「アンコミット」するとは、ワーキングツリーから変更内容を削除せずに、そのリビジョンをリビジョン履歴から取り除くことを意味します。これは、変更は行ったものの、まだチェックインしていない状態のようなものです。vc-uncommit-revisions-from-end
コマンドはリビジョンの指定を求め、ブランチの末尾から指定したリビジョン(ただし指定リビジョン自体は含まない)までのすべてのリビジョンをアンコミットします。ブランチは指定したリビジョンまで巻き戻されますが、変更内容はワーキングツリーに残されます。
現在のブランチを巻き戻す際、リビジョン履歴から削除されるリビジョンがすべてプルまたはプッシュ済みのものであれば、これらの操作によってデータが永久に削除されることはありません。単純な C-x v +(ブランチへの変更のプル/プッシュ を参照)を実行すれば、リビジョンを復元できます。一方で、ブランチの末尾にまだプッシュされていない新しいリビジョンが存在する場合、これらのコマンドによってそれらは永久に削除されます。Emacs はこのような状況を検出しようとし、本当に削除してよいかを確認します。
この機能を利用する別の方法として、ログビューモードのバッファにおいてそれぞれ x および X にバインドされている log-view-uncommit-revisions-from-end および log-view-delete-revisions-from-end コマンドがあります(VC Change Log
を参照)。ここで説明するコマンドを直接使用する場合に比べ、ログビューモードのコマンドを利用すれば、意図したリビジョンまで確実に巻き戻せているかを確認しやすくなります。