Как использовать git mv от magit?

Есть ли хороший способ вызвать git mv для файла из magit? Я знаю, что можно запустить любую команду git с помощью :, но это не приведет к автозаполнению имен файлов.


person Yossarian    schedule 12.07.2013    source источник
comment
Просто для информации: как вы думаете, чем занимается git mv? Вы понимаете, что git не отслеживает ходы? git mv просто переименует файл, удалит старое имя из индекса и добавит новое.   -  person Chronial    schedule 12.07.2013
comment
Да, это точно так же, как и все остальное в magit, в основном одно/два нажатия клавиши, я надеялся, что есть что-то для mv.   -  person Yossarian    schedule 12.07.2013


Ответы (3)


Я не уверен навскидку, есть ли прямой путь, но...

Учитывая, что mv это то же самое, что rm плюс add, вы можете просто переименовать файл как обычно (например, в dired), а затем выполнить оба последовательных изменения — удаленный файл и новый файл.

Git должен понять это.

Изменить:

M-x vc-rename-file ?

person phils    schedule 12.07.2013
comment
Это работает, но я искал что-то, чтобы сделать это автоматически. : mv /path/to/file1 /path/to/file2 (из буфера magit) еще быстрее, но не автозаполняется. - person Yossarian; 12.07.2013
comment
Отлично, vc-rename-file делает то, что я хочу! - person Yossarian; 12.07.2013
comment
Как заставить git mv? Я получаю сообщение об ошибке: Пожалуйста, обновите файлы перед их перемещением - person nnyby; 20.06.2014
comment
nnyby: Итак, я предполагаю, что в файле, который вы пытаетесь переместить, есть неслитые изменения, поэтому вы должны сделать, как он говорит, и сначала объединить эти изменения, иначе я ожидаю, что они будут потеряны. Если вы на 100 % уверены, что не хотите изменений, вариант -f может помочь. (В противном случае вы всегда можете просто скопировать файл и вручную восстановить его после слияния.) - person phils; 21.06.2014

Для справки, по крайней мере, в текущей версии magit есть magit-file-rename, который может быть вызван с помощью R.

person Maciej Piechotka    schedule 23.09.2016
comment
Было бы неплохо иметь и magit-file-move. - person Jens Petersen; 24.05.2020
comment
поскольку буфер magit не отображает отслеживаемые файлы, переместите курсор на последнюю пустую строку и нажмите R, чтобы вызвать magit-file-rename - person frogcoder; 18.03.2021

Я использую для этого диред. C-x d, когда файл открыт, затем нажмите ! на файле, чтобы запустить команду git mv ? newpath с файлом в качестве аргумента ?.

person sp3ctum    schedule 04.11.2013
comment
Это не меняет каталог буфера emacs, о котором я часто забываю, к своему смущению... - person Jens Petersen; 24.05.2020