[英]Why does Git write to my files?
我在 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)?
提交/推送如何修改我的源文件? 为什么?
这可能是一个权限问题(git 更改了文件的可执行位)。
在git config core.filemode false
后重试。
解决方案很简单:使用:e filename
重新打开:e filename
。
或者(如果您的文件已保存并且当前没有修改),运行:bufdo e
,这将使 Vim 重新打开每个缓冲区。
你能告诉我们你的 .gitattributes 文件吗? 你是在告诉它改变行尾吗?
你为什么不尝试做一个差异并向我们展示差异是什么。
其他答案表明写入可能是由于 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.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.