我在Git仓库中有一些源文件,main.c
和其他一些。我使用Vim编辑这些文件。
说我正在编辑main.c
。我做了一个更改,告诉Vim写出来,然后切换到终端(不杀死Vim)和提交/推送。如果我使用main.c
返回Vim并尝试再次注销,我会收到此警告:
WARNING: The file has been changed since reading it!!!
Do you really want to write to it (y/n)?
提交/推送如何修改我的源文件?为什么呢?
答案 0 :(得分:1)
这可能是权限问题(git更改文件的可执行位)
请在git config core.filemode false
后重试。
解决方案很简单:使用:e filename
重新打开文件
或者(如果您的文件已保存且当前没有修改),请运行:bufdo e
,这将使Vim重新打开每个缓冲区。
答案 1 :(得分:0)
你能告诉我们你的.gitattributes文件吗?你是在告诉它改变行结尾吗?
为什么不尝试做差异并告诉我们差异是什么。
答案 2 :(得分: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.