Подтвердить что ты не робот

Использование vim для git фиксации сообщений, поврежденных после обновления janus

После обновления дистрибутива janus vim возникла проблема с использованием vim для сообщений о фиксации. Лучший пример этого - это сделать git pull, чтобы получить другие изменения. Появится редактор vim, я набираю сообщение commit, я ввожу : w q, но вместо выполнения транзакции появляется следующее сообщение об ошибке:

error: There was a problem with the editor 'vi'.
Not committing merge; use 'git commit' to complete the merge.

Затем мне нужно вручную зафиксировать: (

Как мне получить git, чтобы хорошо играть с vim?

4b9b3361

Ответ 1

После небольшого количества поисковых запросов, выясняется, что ответ заключается в следующем:

git config --global core.editor $(which vim)

Ответ 2

Nat Ritmeyer дал правильное решение . Я дам вам причину.

Как объяснил Стив Тук, скрывая ваш ~/.vimrc или явно говоря git, чтобы использовать полный путь к vim, решает проблема. Тем не менее, он заканчивается словами "Id по-прежнему нравится обращаться к корню проблемы".

Попробуйте следующее:

  • Запустите git commit, чтобы попасть в редактор vim.
  • Нажмите <CTRL> + Z, чтобы остановить процесс и вернуться к TTY
  • Сделайте ps и обратите внимание на свой TTY (номер которого вы получаете с помощью команды tty) есть что-то вроде...

    $ tty
    /dev/ttys005
    
    $ ps
      PID TTY           TIME CMD
    17547 ttys005    0:00.15 -bash
    65126 ttys005    0:00.02 git commit
    65127 ttys005    0:00.10 vi .git/COMMIT_EDITMSG
    
    $ which vi
    /usr/bin/vi
    
    $ ll /usr/bin/vi
    lrwxr-xr-x  1 root  wheel  3 Oct  3 17:40 /usr/bin/vi -> vim
    
    $ jobs
    [1]+  Stopped                 git commit
    
  • Вернитесь к вашему процессу vim с помощью fg %1 (или того, что когда-либо остановило номер задания, в котором указан git commit).

Что говорит нам этот вывод оболочки...

  • Я использовал ttys005
  • В TTY bash, называемом git и git, называемом vi
  • Полный путь vi равен /usr/bin/vi
  • Команда vi является символической ссылкой на vim
  • Вызов <CTRL> + Z остановил команду git commit, и она была # 1 в стеке заданий.

Итак, vi - это ту же команду, что и vim?!?! Да, но vim отмечает, что ее argv[0] был vi и работает в совместимый режим. Это может вызвать проблемы в зависимости от того, что находится в вашем .vimrc.

лучшее решение - сообщить git использовать vim, но я предлагаю вам не предполагать, что ваш vim-путь будет таким же, как и все elses (возможно вы установили через brew install vim)

git config --global core.editor $(which vim)

Ответ 3

Это может быть плагин или что-то в вашем .vimrc файле. Лучший способ загрузить vim в безопасном режиме для редактирования сообщений фиксации - использовать:

git config --global core.editor '/usr/bin/vim -f -u NONE'

Ответ 4

Я сталкивался с той же проблемой каждый раз, когда я получал удаленное репо и сливал его с другой веткой.

Ввод этого в терминал фиксировал это для меня

git config --global core.editor $(which vim)

Ответ 5

Если по какой-либо причине git config --global core.editor /usr/bin/vim не работает, попробуйте без флага --global. Я мог заставить его работать только без флага --global.