GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/VC-Change-Log.html ・ emacs-doc.conao3.com

30.1.7 VC 変更履歴

C-x v l

現在のファイルセット (vc-print-log) の変更履歴を表示します。

C-x v L

現在のリポジトリ (vc-print-root-log) の変更履歴を表示します。

C-u 1 C-x v L revision RET

単一の revision (vc-print-root-log) のログエントリと変更内容 (diffs) を表示します。

C-x v b l

別のブランチにある現在のファイルセットの変更履歴を表示します (vc-print-fileset-branch-log)。

C-x v b L

現在のリポジトリの変更履歴を別のブランチに表示します (vc-print-root-branch-log)。

C-x v I

「pull」操作で取得される変更のログエントリを表示します (vc-root-log-incoming)。

vc-use-incoming-outgoing-prefixes を nil 以外にカスタマイズすると、C-x v I がプレフィックスキーになり、vc-root-log-incoming が C-x v I L にバインドされます。

M-x vc-root-diff-incoming

プル操作で取得されるすべての変更の差分を表示します。

vc-use-incoming-outgoing-prefixesをnil以外にカスタマイズすると、このコマンドがC-x v I Dで利用可能になります。

M-x vc-diff-incoming

プル操作で取得される変更の差分を、現在のファイルセットに限定して表示します。

vc-use-incoming-outgoing-prefixesをnil以外にカスタマイズすると、このコマンドがC-x v I =で利用可能になります。

C-x v O

次回の「push」操作で送信される変更のログエントリを表示します (vc-root-log-outgoing)。

vc-use-incoming-outgoing-prefixes を nil 以外にカスタマイズすると、C-x v O がプレフィックスキーになり、vc-root-log-outgoing が C-x v O L にバインドされます。

M-x vc-root-diff-outgoing

次回のプッシュ操作で送信されるすべての変更の差分を表示します。

vc-use-incoming-outgoing-prefixesをnil以外にカスタマイズした場合、このコマンドはC-x v O Dにバインドされます。

M-x vc-diff-outgoing

次回のプッシュ操作で送信される変更の差分を、現在のファイルセットに限定して表示します。

vc-use-incoming-outgoing-prefixesをnil以外にカスタマイズすると、このコマンドがC-x v O =で利用可能になります。

C-x v E D

次回のプッシュ操作で送信されるすべての変更と、未コミットの変更を合わせた差分を表示します。

C-x v E =

次回のプッシュ操作で送信されるすべての変更と、未コミットの変更を合わせた差分を、現在のファイルセットに限定して表示します。

C-x v h

現在のバッファが参照しているファイルの領域で行われた変更履歴を表示します (vc-region-history)。

M-x vc-log-search RET

変更履歴から指定したパターンを検索します。

C-x v l (vc-print-log) は *vc-change-log* という名前のバッファを表示し、現在のファイルセットに加えられた変更履歴を、変更者、日付、および各変更のログエントリを含むロング形式で表示します(これらは、*vc-log* バッファ経由で入力するログエントリと同じものです。ログエントリバッファの機能 を参照してください)。ファイルを表示しているバッファから呼び出された場合、現在のファイルセットはその単一のファイルとなり、表示される *vc-change-log* バッファのポイントはそのファイルのリビジョンを中心に配置されます。VCディレクトリバッファ(VCディレクトリモード を参照)またはDiredバッファ(ファイル操作 を参照)から呼び出された場合、ファイルセットはマークされたすべてのファイルで構成され、マークされたファイルがない場合は、ディレクトリバッファの現在の行に表示されているファイルがデフォルトとなります。

ファイルセットに1つ以上のディレクトリが含まれている場合、VCバックエンドが対応していれば、結果として得られる*vc-change-log*バッファに変更内容の簡潔なログ(変更1件につき1行)が表示されます。対応していない場合は、ログが長文形式で表示されます。

prefix引数を指定すると、このコマンドは*vc-change-log*バッファ内で中心とするリビジョンと、表示するリビジョンの最大数をユーザーに求めます。

C-x v L (vc-print-root-log) は、バージョン管理対象のディレクトリツリー全体の履歴を表示する *vc-change-log* バッファを表示します(RCS、SCCS、CVS、および SRC はこの機能をサポートしていません)。接頭辞引数を指定すると、コマンドは表示するリビジョンの最大数を問い合わせます。数値の接頭辞引数を指定すると、問い合わせなしにリビジョンの最大数が指定されます。

数値プレフィックス引数が C-1 C-x v L や C-u 1 C-x v L のように 1 の場合、コマンドはリビジョンIDの入力を求め、そのリビジョンのログエントリとそこで導入された変更内容(diffs)を表示します。(RCS や CVS など、機能が限定的な一部のバージョン管理システムには、diffs 付きのリビジョンログを表示するコマンドがありません。こうしたシステムでは、コマンドはログエントリのみを表示し、d や D と入力することで diffs の表示を要求できます。詳細は後述します。)

C-x v L の履歴はコンパクトに表示され、通常は各ログエントリの1行目のみが表示されます。ただし、*vc-change-log* バッファに RET (log-view-toggle-entry-display) と入力すると、ポイントにあるリビジョンのログエントリ全体を表示できます。2回目に RET と入力すると、再び非表示になります。

C-x v b l branch-name RET (vc-print-fileset-branch-log) は、vc-print-log と同様に現在のファイルセットに加えられた変更履歴をロング形式で表示する *vc-change-log* バッファを表示しますが、現在のブランチとは別のブランチの履歴を表示し、履歴を確認したいブランチ名の入力を求めます。C-x v b L branch-name RET (vc-print-root-branch-log) も同様ですが、vc-print-root-log のようにバージョン管理下のディレクトリツリーの履歴を表示します。

意味のあるバージョン管理システムであれば、ブランチ名の代わりにリビジョンIDを branch-name として指定することもでき、Emacs はそのリビジョンIDから始まるログを出力します。また、VCS がサポートする特定のリビジョンに対して、タグ名(リビジョンタグ を参照)や Git がサポートするリモートブランチ参照など、他の名称を指定することも可能です。

分散型バージョン管理システムにおいて、C-x v I (vc-root-log-incoming) コマンドは、別のリモートロケーションから新しいリビジョンを取得するためにバージョン管理システムの pull コマンドを次に実行した際に適用される変更内容を示すログバッファを表示します(ブランチへの変更のプル/プッシュを参照)。この別のリモートロケーションは、バージョン管理システムで定義された、変更をプルする際のデフォルトのロケーションです。プレフィックス引数を指定すると、vc-root-log-incoming は特定のリモートロケーションの入力を求めます。同様に、C-x v O (vc-root-log-outgoing) は、次に push コマンドを実行した際に別のリモートロケーションに送信される変更内容を表示します。プレフィックス引数を指定すると、特定の送信先の入力を求めます。バージョン管理システムによっては、これがブランチ名となる場合があります。

密接に関連するコマンド vc-root-diff-incoming と vc-root-diff-outgoing は、vc-root-log-incoming と vc-root-log-outgoing の diff 版にあたります。これらは、プルまたはプッシュされる変更内容を報告する diff バッファを表示します。ここでもプレフィックス引数を使用して、特定のリモートロケーションを指定できます。vc-root-diff-outgoing は、プッシュ内容をプレビューし、含めるつもりだった変更がすべて、かつそれ以外に何も含まれずにコミットされ、プッシュされることを素早く確認するのに便利です。

コマンド vc-diff-incoming と vc-diff-outgoing は非常によく似ています。また、プルまたはプッシュされる変更内容も表示されます。違いは、報告される差分が現在のファイルセットに限定されている点です。実際のプルおよびプッシュ操作は、現在のファイルセットだけでなく、常にワーキングツリー全体に影響を与えることを忘れないでください。

最後に、プッシュ予定のすべての変更と未コミットの変更を合わせた差分を表示する C-x v E D (vc-root-diff-outgoing-and-edited) もあります。これは、ローカルにのみ存在するすべての作業内容を表示する際に便利です。また、同様の機能で現在のファイルセットに限定した C-x v E = (vc-diff-outgoing-and-edited) もあります。

*vc-change-log* バッファでは、以下のキーを使用してリビジョンとファイルのログ間を移動したり、過去のリビジョンを確認・比較したりできます(過去のリビジョンの確認と比較を参照):

p

直前のリビジョンエントリ (log-view-msg-prev) に移動します。(ログバッファ内のリビジョンエントリは通常、逆時系列順に並んでいるため、直前のリビジョン項目は通常、より新しいリビジョンに対応します。)数値のプレフィックス引数は繰り返し回数です。

n

次のリビジョンエントリ (log-view-msg-next) に移動します。数値のプレフィックス引数は繰り返し回数です。

a

現在の行のリビジョンに注釈を付けます(log-view-annotate-version; 古いリビジョンの確認と比較を参照)。

e

(log-view-modify-change-comment) の箇所に表示される変更コメントを変更します。なお、すべての VC システムが変更コメントの変更に対応しているわけではありません。

f

現在の行に示されているリビジョン(log-view-find-revision)を参照してください。

d

特定のファイル(log-view-diff)について、時点のリビジョンとそれより前の次のリビジョンとの差分を表示します。

D

時点のリビジョンと、その一つ前のリビジョン(log-view-diff-changeset)とのチェンジセット差分を表示します。これにより、そのリビジョンで行われたすべてのファイルへの変更内容が表示されます。

w

M-w (log-view-copy-revision-as-kill) を使用した場合と同様に、point にあるログエントリのリビジョンIDをキルリング(キルリング を参照)にコピーします。複数のリビジョンがマークされている場合、このコマンドはそれらすべてのIDをスペース区切りでキルリングにコピーします。

RET

コンパクト形式のログバッファ(例:C-x v L で作成されたもの)において、位置 (log-view-toggle-entry-display) にあるリビジョンのログエントリ全文の表示と非表示を切り替えます。

M-RET

該当する場合は、RET のようにログエントリ全文を表示し、あわせて D のように差分も表示しますが、差分を表示しているウィンドウは選択しません(log-view-display-entry-and-diff)。ログエントリ全文が既に表示されている場合は、決して非表示にしません。

M-p

p の後に M-RET が続く場合:前のエントリに移動し、該当すれば全文を表示し、その差分 (log-view-msg-and-diff-prev) を表示します。数値の接頭辞引数は移動部分の繰り返し回数であり、全文表示されるエントリは最大で1件です。

M-n

n の後に M-RET が続く場合:前のエントリに移動し、該当すれば全文を表示し、その差分 (log-view-msg-and-diff-next) を表示します。数値の接頭辞引数は移動部分の繰り返し回数であり、全文表示されるエントリは最大で1件です。

m

点 (log-view-mark-entry) にエントリをマークする。

u

点 (log-view-unmark-entry) のエントリのマークを解除する。

U

マーク済みのエントリ(log-view-unmark-all-entries)のマークをすべて解除する。

C

現在チェックアウト中のブランチへの変更内容をコピーします。ポイントにあるリビジョンの変更内容、またはマークされたすべてのリビジョンの変更内容(log-view-cherry-pick)のいずれかとなります。

R

過去のリビジョンによる影響を取り消す。対象のリビジョン、またはマークされたすべてのリビジョン(log-view-revert-or-delete-revisions)のいずれか。

x

ワーキングツリーに影響を与えずに、現在のブランチから point のリビジョンより新しいリビジョンを削除します (log-view-uncommit-revisions-from-end)。

X

現在のブランチの時点のリビジョンより新しいリビジョンを削除します (log-view-delete-revisions-from-end)。

多数のログエントリを取得すると時間がかかる場合があるため、*vc-change-log* バッファではデフォルトで 2000 件までのリビジョンが表示されます。変数 vc-log-show-limit でこの制限を指定でき、値を 0 に設定すると制限が解除されます。また、バッファ末尾にある ‘Show 4X entries’ または ‘Show unlimited entries’ ボタンをクリックすることで、既存の *vc-change-log* バッファに表示されるリビジョン数を増やすこともできます。ただし、RCS、SCCS、CVS、および SRC はこの機能をサポートしていません。

変更履歴を確認する有用なバリエーションとして、コマンド vc-region-history(デフォルトでは C-x v h にバインドされています)が用意されています。これにより、現在のバッファのファイル内で、ポイントからマークまでの領域に対して行われた変更履歴を表示する *VC-history* バッファが表示されます(マークと領域 を参照)。変更履歴には、コミットログメッセージのほか、Diff形式による変更内容自体も含まれます。

現在のバッファで、変更内容を確認したい範囲をマークした後に、このコマンドを実行してください。*VC-history* バッファでポップアップが表示され、前述の *vc-change-log* バッファで利用可能なすべてのコマンドに加え、Diff モードで定義されたコマンド(Diff モード を参照)も使用できます。

このコマンドは現在、Git と Mercurial (hg) でのみ利用可能です。

vc-log-search コマンドを使用すると、変更ログからパターンを検索できます。パターン(正規表現)の入力を求め、変更履歴の中でログメッセージがそのパターンに一致するすべてのエントリを表示します。接頭辞引数を指定して実行した場合、このコマンドは当該目的のために実行する特定の VCS シェルコマンドの入力も求めます。