IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    数据让 git 给吃了!

    依云发表于 2016-11-10 15:52:06
    love 0

    本文来自依云's Blog,转载请注明。

    之前一直觉得 git 是很安全的,除非用户显式指定(比如 --force 啦,reset --hard 啦,checkout xxxx 啦),git 在用户会失去数据时都会停下来,让不小心的用户有机会处理被遗忘的修改。直到有一天,我们有个文件让 git 给吃了!

    嗯,是「我们」,不是「我」。这是我们的代码部署服务器上出的事。这仓库不是我使用的,整个操作流程我也没有参与设计与评估。实际上我只是作为 troubleshooter 参与到这次神秘事件之中的。

    要让 git 愉快地吃掉数据,只要这样就可以了:

    • 提交 A 不包含文件 f
    • 提交 B 包含文件 f
    • 当前工作区为提交 A,并且包含一份未被 git 管理的文件 f,并且 f 被 gitignore 忽略掉了

    然后做如下操作,未被管理的那份 f 就会消失不见了:

    • 将工作区切换到提交 B。因为 f 被忽略,所以 git 不会报错(代码)
    • 将工作区再切换回 A。因为 A 不包含 f,所以 f 被删掉了

    正在吃 f 的 git:主人遗弃了的 f 就交给我好了~

    要避免出现这种问题,当然是在 git 工作区会有修改的时候,不要依靠 git 来在多个版本间切换啦~btrfs 或者 zfs 的快照多好!如果文件系统不支持快照的话,那就用多个目录吧。



沪ICP备19023445号-2号
友情链接