У меня есть файл foo.txt
в ветке A
, и я хочу извлечь foo.txt
из ветви B
в индекс. В командной строке я бы сделал это:
$ git checkout B -- foo.txt
Я хочу быть в состоянии сделать это в magit, войдя в систему, найдя коммит, в котором я заинтересован (например l o B
), найдя foo.txt
и выполнив некоторую команду, но я не могу понять, как это сделать.
Ответы:
Начиная с 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 Revision Режим.
источник