2017-01-11 32 views
1

У меня есть несколько исходных файлов в Git repo, main.c и некоторых других. Я использую Vim для редактирования этих файлов.Почему Git пишет в мои файлы?

Скажем, я редактирую main.c. Я делаю изменения, расскажу Vim о выписывании, затем переключитесь на терминал (без убийства Vim) и совершите/нажмите. Если я вернусь в Vim с main.c и попытаться написать-снова, я получаю это предупреждение:

WARNING: The file has been changed since reading it!!! 
Do you really want to write to it (y/n)? 

Как совершать/толкания изменять свои исходные файлы? Зачем?

ответ

1

Это может быть проблема разрешения (git, изменяющая исполняемый бит файла).
Повторите попытку после git config core.filemode false.

Решение просто: откройте файл :e filename.
Или (если ваши файлы сохранены и не имеют текущей модификации), запустите :bufdo e, что заставит Vim снова открыть каждый буфер.

0

Можете ли вы показать нам свой файл .gitattributes? Вы хотите изменить окончание строки?

Почему бы вам не попробовать сделать разницу и показать нам, каковы различия.

+0

не имеют '.gitattributes' файл. –

+0

ok, дайте нам разницу – jbu

+0

Как бы найти diff? –

0

Другие ответы показали, что запись может произойти из-за того, что Git выполняет изменение окончания строки или расширяет настроенные атрибуты. Простое решение заключается в

:set autoread 

в Vim, чтобы автоматически обновлять файл (до тех пор, пока вы не изменили его, который основан на ваш случай использования кажется маловероятным).

'autoread' 'ar'   boolean (default off) 
     When a file has been detected to have been changed outside of Vim and 
     it has not been changed inside of Vim, automatically read it again.