git 误删文件? 哪位高手惹的货 (文件大小写修改)

git 误删文件? 谁惹的货 (文件大小写修改)

1.背景

 

    今天有兄弟说我 在git上 误删了 他的js文件 

    

     我当时即刻就感到难以置信,作为10年开发经验的一枚程序员,怎么可能做这种事情!!!!

 

     但是 兄弟拿出证据了 

 


git 误删文件? 哪位高手惹的货 (文件大小写修改)
 

 2.排查

 

作为社会主义四有新人,不会做这样的事情的,通常我不会删别人的文件(如果code review 要删的话,肯定也会告知对方的), 何况这个文件还是 后台管理系统中不知道哪个功能的一个js

 

 

 

我就不信邪

 

我得查查 ,揪揪看, 到底是为什么 ,我就基于整个项目 来 show  history

 

 

嘿 还真发现, 在我的代码版本之前的几个小时 有删除记录 


git 误删文件? 哪位高手惹的货 (文件大小写修改)
 

  

 

哦, 然后问了下兄弟,  原来是 他之前 重命名了 文件名 ,  从update-item-baseInfo.js 改成  update-item-baseinfo.js    也就是从 大写的 Info 改成了 小写的 info

 

 

3. 原因

 

好嘛, 我们的开发环境 目前都是 windows操作系统,  不区分大小写, 

在 git  pull代码的时候, 原来的文件会被删除, 但是新文件的名称 对于 windows而言 和 原来的名字是一样的, 那么就不会创建新文件

 

而我当天由于批量修改了 author值, 这条删除记录从茫茫的提交记录中忽视了 自然而然的就提交了

 

4.总结

 

这个事件也点明了:

 

  1. 如果是windows开发环境  重命名的时候, 不要简单的大小写修改
  2. 提交文件的时候,还是需要留个心眼儿, 冷不丁的可能会提交不是你想要提交的东西

 

 参考 :

 

http://stackoverflow.com/questions/17683458/how-do-i-commit-case-sensitive-only-filename-changes-in-git

 

http://stackoverflow.com/questions/8481488/is-git-not-case-sensitive

 

http://stackoverflow.com/questions/10523849/changing-capitalization-of-filenames-in-git