为什么Git会写入我的文件?

时间:2017-01-11 04:41:10

标签: git vim git-commit git-push

我在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)?

提交/推送如何修改我的源文件?为什么呢?

3 个答案:

答案 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.