29

Когда в беглом плагин окне статуса, доступ к которому с :Gstatus что можно дифф изменения в файл с помощью D и переключать файлы для фиксации с помощи -.

Есть ли аналогичный ярлык для отмены изменений, с отказом, я имею в виду эквивалент git checkout -- filename?

Обновить:

Обнаружен запрос функции на странице GitHit беглецов Проблема № 97: Ярлык для извлечения / удаления файлов

В соответствии с этим предпочтительным способом является использование :Gread :w

Обновление 2:

С июня 2014 года возможно использование U, как ответил Ансон ниже.

5 ответов5

22

Эта функциональность была добавлена в июне 2014 года и по умолчанию сопоставлена с U.

Эта часть информации находится в файле справки под :h :Gstatus :

     U     |:Git| checkout HEAD

Особенность запроса и обсуждение:
https://github.com/tpope/vim-fugitive/issues/97

Commit:
https://github.com/tpope/vim-fugitive/commit/061a81f247538aeb61e165e1551355f289d52f63

13

Вы можете использовать команду Gread беглого «s , чтобы заменить содержимое буфера с различными альтернативными версиями файла в буфера (т.е. это должно быть сделано из буфера файла, в то не :Gstatus буфера).

  • :Gread (без аргументов) будет использовать версию файла из индекса .
  • :Gread - будет использовать версию файла из коммита HEAD.

См. Документацию по адресу :help fugitive-revision для получения списка других спецификаций ревизии, которые поддерживает беглец (две из них, вероятно, наиболее полезны).

Рабочий процесс :Gread происходит следующим образом:

  1. :Gread
  2. Беглец очищает текущий буфер и читает содержимое из индекса
  3. Результат: буфер теперь имеет то же содержимое, что и индекс. Файл рабочего дерева не изменяется.
  4. Вы можете выполнить :w чтобы сохранить файл в рабочем дереве (или использовать :Gread|w если вы знаете, что хотите сохранить его сразу).

Оформление :Git checkout -- % рабочий процесс происходит следующим образом:

  1. :Git checkout -- %
  2. Git копирует версию файла в индексе в файл в рабочем дереве.
  3. Vim замечает, что файл был изменен вне редактора, и предлагает вам проигнорировать или перезагрузить его.
  4. Вы говорите Vim, чтобы перезагрузить файл.
  5. Результат: и файл рабочего дерева, и буфер теперь содержат содержимое из индекса.

Сводка:: :Gread избегает приглашения «файл изменился с момента начала редактирования» и позволяет вам решить, когда вы хотите изменить файл в рабочем дереве.


Когда буфер представляет стадию индекса файла вместо файла из рабочего дерева :Gread считывает содержимое файла так, как оно существует на диске в рабочем дереве, вместо стадии 0 индекса.

1

Сопоставление для gstatus для восстановления файла:

au FileType gitcommit nmap <buffer> U :Git checkout -- <c-r><c-g><cr>
0

Ну, ты пытался :help fugitive?

Видимо нет, для этой функции Git нет ярлыка.

0

Хотя это не имеет ничего общего с vim, подумал сказать вам, что я иногда делаю:

$ git status
...
#
#   modified:   .rvmrc
#   modified:   app/views/admin/base/index.html.erb
#   modified:   config/routes.rb
#
...

$ # mouse-copy the files i want to reset, and paste them into the next command

$ cat | xargs git checkout
app/views/admin/base/index.html.erb
config/routes.rb
^D

быстро заканчиваю работу

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .