Answers:
从magit 2.11.0开始,这可以直接从重置调度程序中进行(X f
您可以指定修订版和文件):
这可以在magit中以编程方式完成,使用magit-file-checkout
它接受版本规范和文件名(由于@Emoses的功能请求和@Kyle Meyer的实现)。以前,该函数已命名magit-checkout-file
(从v2.3.0-v2.9.0起)。
magit-checkout-file
现在已过时。使用magit-file-checkout
代替。
我不知道执行此操作的内置方法。
假设您在分支A上,另一种方法是对分支B(d r ..B
)进行比较,然后将a
指针移动到您感兴趣的文件。按将这些更改应用于工作树(而不是索引)。
我的配置中有一个命令可以从修订中重置或签出文件,但是在当前状态下,它不能完全满足您的要求,因为在Magit修订中无法提供良好的修订默认值模式。
(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)))