バッファをリビジョンと比較するにはどうすればよいですか?


8

ediffを実行して、ファイルの現在のバージョン(git内)を別のブランチ上のファイルのバージョンと比較したいと思います。

M-x ediff-revision問題のファイルのオープンバッファー内から実行します。私は2つの質問に答えます。

  • ファイルのリビジョンを比較する:私はこの回答を空白にします(デフォルトは現在のバッファーで、これが正しいものです)。
  • 比較するリビジョン1:デフォルトを再び受け入れます(「デフォルトファイルの最新バージョン」)。
  • 比較するリビジョン2:gitブランチ名を入力します

これは、2つのファイルの違いを表示するのに最適です。ただし、現在のバージョンを編集できるようにしたい(つまり、diffのブロックをコピーまたは削除するためにヒットaまたはbediffで)、「現在のバージョン」のバッファーは、製造名(file.~git-branch~)の読み取り専用バッファーです。「現在のバージョン」のバッファを、現在のブランチのバージョンの読み取り専用バッファではなく、最初の読み取り/書き込みバッファにしたい。

回答:


7

Emacsは、あなたが意図したことの代わりに、あなたがそれをするように言ったことを実行しています。ediff-revision3つの情報を要求します。

  1. 作業するファイル —デフォルト:現在のバッファがアクセスしているファイル
  2. 古いリビジョン—デフォルト:最新のリビジョン。
  3. 新しいリビジョン—デフォルト:現在の状態。

ステップ1ではファイルを選択しますが、Emacsに、ファイルをバッファー内でそのまま使用することを伝えていません。ステップ2のデフォルトは最新のリビジョンであり、現在の作業コピーではありません。ステップ3のデフォルトは、バッファーの内容です。これは、バッファーが変更されていない場合の作業コピーです。チェックアウトした内容(通常は現在のブランチの最新リビジョン)を他のブランチと比較し、作業コピーを他のブランチと比較していません。

ブランチ名を最初のリビジョン(ステップ2)として指定し、3番目の質問を空白のままにして、バッファー状態を使用することを伝える必要があります。現在のバッファー状態は、リビジョン2では選択できますが、リビジョン1では選択できません(これはに組み込まれていますediff-vc-internal)。


7

magitを使用する場合

  1. l -al l履歴内のすべてのブランチのリビジョンを表示するために使用します
  2. 現在のバッファーの内容と比較するリビジョンを含む行に移動します。
  3. 入力dすると、現在の作業ツリーと比較するリビジョンを尋ねられます(デフォルトはその時点のリビジョンです)。確認。
  4. 現在の作業ツリーとリビジョンの間のすべてのファイルの違いの変更に関する差分の概要が表示されます。興味のあるファイルにポイントを置き、そのe上でediffセッションを呼び出すためにヒットします。

Magitには、リビジョンを表示するためのいくつかのオプションがあります(ステップ1)。非常に複雑なブランチ構造がある場合は、さらにフィルタリングを使用して目的のリビジョンを見つけることができます。


すごい!これはまさに私が探していたものです。ただ...どういう意味-alですか?私は通常、l lまたはl amagit-statusバッファで実行します。
甥の

これはmagitの古いユーザーインターフェイスレイアウト用です。現在のバージョンでは使用できますl a。Magitのレイアウトは、過去3年間で何度も変更されました。
dfeich 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.