54

git リポジトリ内の結合されていないファイルに、無関係な変更を多数加えたとします。各ファイルを個別に確認してコミットしたいと思います。

を実行magit-statusして、変更されたファイルのリストを取得します。しかし、私が見つけることができる唯一のmagit diffコマンド(dおよびD)は、個々のファイルではなく、リビジョン全体を比較します。

の出力が必要ですgit diff <filename>が、magit diff バッファー内にあります。magit で 1 つのファイルのみを比較するにはどうすればよいですか?

4

3 に答える 3

100

Magit を使用するとmagit-status、個別の差分バッファーを必要とせずに、バッファーから直接「各ファイルを個別に確認してコミットする」ことができます。

関心のあるファイルを展開するだけです ( を使用するとTAB、その時点のファイルの差分が表示されます)。次に、コミットするビット (ファイル全体、個々のハンク、またはマークされた領域のいずれか)sをステージング (またはuステージング解除) することができます。そのコミットに含まれるすべての変更について繰り返します。必要なすべてがステージングされたら、 を押しcてコミットを開始します。

でデフォルトで得られる単純なトグルの代わりに、(繰り返し)を使用して得られる可視性循環動作を好むかもしれません。C-TABTAB


ファイルの差分を別のバッファで表示したい場合は、ファイルのバッファからmagit-diff-buffer-file直接呼び出すか、 の「差分」オプション ( d)を使用して表示できますmagit-file-popup。例えば:

(global-set-key (kbd "C-c m d") 'magit-diff-buffer-file)
(global-set-key (kbd "C-c m f") 'magit-file-popup)

以下の @assem のコメントにも注意してください。

magit-ediffまた、デフォルトでどちらにバインドされているかに興味があるかもしれません。またe、ポイントで差分/ファイルの ediff セッションを開きます。


デフォルトでEmacsで利用可能な他の代替手段(つまり、Magitではない)は次のとおりです。

  • C-xv=電話するvc-diff
  • M-x vc-ediffediff に相当するもの
  • M-x ediff-revisionより多くのオプションを使用して ediff セッションを作成するには

2 つのバリアントが同様のキー バインディングを持つようにバインドvc-ediffします。C-xvC-=

于 2013-07-23T00:16:01.217 に答える
24

magit の作成者によるビデオを見ることをお勧めします。20 分で、意図したとおりのワークフローが表示されます。

また、ちょっとしたヒント: を使用1 2 3して、現在の見出しの差分詳細度を変更できます。

もう 1 つの小さなヒント: ハンクのサイズに満足できない場合は、リージョンをマークして を押すことで、任意のリージョンsステージングできます。魔法です。私はしばらくの間、このオプションについて知りませんでした。私は実際にコンソールに戻り、git add -p昔ながらのやり方をしていました。

于 2013-07-23T06:30:44.447 に答える
3

他の回答で例示されているように、ツールを使用するときに穀物に逆らわないことには間違いなく利点があります。

一方で、編集者に何をすべきかを伝えたいだけで、他のことをしたいと言うのではなく、インターネット上の人々にあなたの質問に答えてもらいたい場合もあります。

magitは、 を介して現在のファイルに対して操作を行うためのメニュー インターフェイスを提供しますM-x magit-file-popup。ここから押すキーは「du」です。これはキーを押す回数が多すぎる可能性があります。その場合は、次のようmagit-diffに直接呼び出すことができます。

(defun magit-diff-given-file (&optional file)
  (interactive)
  (unless file
    (setf file buffer-file-name))
  (magit-diff-working-tree "HEAD" nil (list (file-relative-name file (magit-toplevel file)))))

このために独自の関数とキーバインディングを定義したいかもしれません。

magit-diffvc-diff差分の場所にジャンプできるため、利点があります。

于 2016-11-29T04:14:51.343 に答える