Як перевірити файл з іншого коміту в Magit


16

У мене є файл foo.txtу відділенні A, і я хочу перевірити його foo.txtз Bіндексу в індекс. У командному рядку я зробив би це:

$ git checkout B -- foo.txt

Я хочу бути в змозі зробити це в magit, перейшовши в журнал, знайшовши комітет, який мене цікавить (наприклад l o B), знайти foo.txtі виконати якусь команду, але я не можу зрозуміти, як це зробити.


Тепер це запит на функцію github.com/magit/magit/isissue/2184 . Дякуємо, що
подивились

Відповіді:


21

З magit 2.11.0 це можливо безпосередньо з диспетчеру скидання ( X fі ви можете вказати версію та файл):

введіть тут опис зображення

Це можна зробити програмно в рамках magit, використовуючи magit-file-checkoutякий приймає специфікацію версії та ім'я файлу (завдяки запиту на функції @Emoses та реалізації @Kyle Meyer). Раніше функція була названа magit-checkout-file(від v2.3.0 - v2.9.0).


4
magit-checkout-fileзараз застаріла. Використовуйте magit-file-checkoutзамість цього.
Сагар Джа

3

Мені невідомий вбудований спосіб зробити це.

Якщо припустити, що ви перебуваєте у гілці A, іншим підходом буде розмежування гілки B ( d r ..B), а потім переміщення точки до файла, який вас цікавить. Натискання 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)))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.