1.背景
今天有兄弟说我 在git上 误删了 他的js文件
我当时即刻就感到难以置信,作为10年开发经验的一枚程序员,怎么可能做这种事情!!!!
但是 兄弟拿出证据了
2.排查
作为社会主义四有新人,不会做这样的事情的,通常我不会删别人的文件(如果code review 要删的话,肯定也会告知对方的), 何况这个文件还是 后台管理系统中不知道哪个功能的一个js
我就不信邪
我得查查 ,揪揪看, 到底是为什么 ,我就基于整个项目 来 show history
嘿 还真发现, 在我的代码版本之前的几个小时 有删除记录
哦, 然后问了下兄弟, 原来是 他之前 重命名了 文件名 , 从update-item-baseInfo.js 改成 update-item-baseinfo.js 也就是从 大写的 Info 改成了 小写的 info
3. 原因
好嘛, 我们的开发环境 目前都是 windows操作系统, 不区分大小写,
在 git pull代码的时候, 原来的文件会被删除, 但是新文件的名称 对于 windows而言 和 原来的名字是一样的, 那么就不会创建新文件
而我当天由于批量修改了 author值, 这条删除记录从茫茫的提交记录中忽视了 自然而然的就提交了
4.总结
这个事件也点明了:
- 如果是windows开发环境 重命名的时候, 不要简单的大小写修改
- 提交文件的时候,还是需要留个心眼儿, 冷不丁的可能会提交不是你想要提交的东西
参考 :
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