git commit时报rename .git /xx/xxxx to.git/xxx/xxxx的错误

在前天写完代码,commit时,报了一个错误:

fatal(好像又是error,记不太清了): rename .git/a5/xxx to .git/a5/xxxxxxxxxxx  failed. Should I try again?(y/n)

当时就感觉懵逼了,自己应该没动过.git中的文件才对,但不管动没动,问题总得解决,但选"y"就一直重复这个错误,选,选"n", 就直接报错退出了。查谷歌竟然没找到文章介绍同样的问题,没办法,只好求助学长了,学长看了看后试着用idea来提交代码,这时候报的错又变了,变成了:

Git rename from index.lock to index failed. Should I try again?(y/n)

谷歌这个问题,在Stack Overflow发现了同样的问题

clipboard.png

然后有人给出了,解决办法

clipboard.png

照着做之后,commit没有报错,以为圆满解决,但运行git status,发现文件一个都没交上去
然后再

git add .
git commit -m ""

还是同样的错误

当时还以为自己在无意中操作了.git的文件,就重新clone了一遍项目,把自己写的代码放进去,但仍然报错,
很明显是代码的问题,在学长的建议下一个文件一个文件的提交找到了问题代码

clipboard.png

问题就在那个contributionList上,改个名字,或者把它删除了都能顺利提交,但就是这个名字不行。(如果有大佬知道为什么,希望评论告知一下)

这时张喜硕学长过来了,就给他又演示了一遍错误,他发现了

clipboard.png
(不是问题文件,当时没有截图)

Git-warning: CRLF will be replaced by LF in XXX

CRLF : windows 环境下的换行符
LF : linux 环境下的换行符

这个错误的意思,就是文件中存在两种环境的换行符,git 会自动替换 CRLF 为 LF ,所以提示警告。

关于这个问题,网上的文章很多,解决办法也很简单,关闭自动转换即可

git config --global core.autocrlf false

果然,问题解决了,作者配的漫画很有意思,同时也可以表现我遇到这个问题时的心情

clipboard.png

(picture from Luis Tubes's blog post )

再次感谢两位学长的帮助

总结

还是不懂为什么别人的都是警告,而我的哪行代码却会导致上述问题,如果您正好知道,希望能评论告知。记得刚学c语言时老师说,一般的warning都可以忽略,因此对于warning自己总是直接忽略,希望通过这次教训能改掉这个坏习惯。

阅读 2.7k

推荐阅读