Magitで別のコミットからファイルをチェックアウトする方法


16

foo.txtbranch Aにファイルがあり、branch foo.txtからBインデックスにチェックアウトしたいです。コマンドラインで、次のようにします。

$ git checkout B -- foo.txt

ログに記録し、興味のあるコミット(例l o B)を見つけfoo.txt、コマンドを見つけて実行することで、これをmagitで実行できるようにしたいのですが、その方法がわかりません。


これは、機能リクエストgithub.com/magit/magit/issues/2184です。それを見てくれてありがとう、メンテナ
18

回答:


21

magit 2.11.0では、これはリセットディスパッチャから直接可能X fです(リビジョンとファイルを指定できます)。

ここに画像の説明を入力してください

これmagit-file-checkoutは、バージョン仕様とファイル名を受け入れるmagitを使用してプログラムで実行できます(@Emosesの機能要求と@Kyle Meyerの実装のおかげです)。以前は、関数の名前はmagit-checkout-file(v2.3.0-v2.9.0から)でした。


4
magit-checkout-file廃止されました。magit-file-checkout代わりに使用してください。
サーガルJhaに

3

私はこれを行うための組み込みの方法を知りません。

あなたがブランチAにいると仮定すると、別のアプローチはブランチB(d r ..B)をdiffし、それから興味のあるファイルにポイントを移動することです。押すaと、それらの変更が(インデックスではなく)作業ツリーに適用されます。

私の構成には、リビジョンからファイルをリセットまたはチェックアウトするコマンドがありますが、現在の状態では、Magit Revisionで適切なリビジョンのデフォルトを提供しないため、あなたが求めているものに正確に適合しませんモード。

(defun km/magit-reset-file (rev file &optional checkout)
  "Reset FILE from revision REV.

If prefix argument CHECKOUT is non-nil, checkout FILE from REV
instead.

\(git reset REV -- FILE)
\(git checkout REV -- FILE)"
  (interactive
   (let ((rev (magit-read-branch-or-commit "Revision")))
     (list rev (magit-read-file-from-rev rev "File") current-prefix-arg)))
  (magit-with-toplevel
    (magit-run-git (if checkout "checkout" "reset")
                   rev "--" file)))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.