• 请不要在回答技术问题时复制粘贴 AI 生成的内容
sneezry
V2EX  ›  程序员

临下班前不小心把一天写的代码都删了

  •  1
     
  •   sneezry ·
    Sneezry · Apr 6, 2017 · 12816 views
    This topic created in 3504 days ago, the information mentioned may be changed or developed.
    写了一天的代码没 git add ,创建一个新的分支后用 rm -rf *清掉了从 master 继承过来的全部代码,准备写入新的代码。当切回 master 时,发现整个世界都静止了(手动微笑

    用了两个多小时把这一天写的代码又都回想起来并调试成功,终于长舒了一口气。

    你说我手贱不贱?

    贱。
    95 replies  •  2017-04-11 09:08:48 +08:00
    cinhoo
    cinhoo
    Apr 6, 2017 via iPhone❤️27
    1
    这时候 intellij 的 local history 就很有用了。
    xmh51
    xmh51
    Apr 6, 2017
    2
    这时候体现了代码放网盘同步文件夹的重要性
    changwei
    changwei
    Apr 6, 2017
    3
    好气啊!!!
    NonClockworkChen
    NonClockworkChen
    Apr 6, 2017
    4
    已感谢,浪费了你的 2 小时,拯救了 2 小时*n....
    guokeke
    guokeke
    Apr 6, 2017
    5
    既视感强烈
    moonman
    moonman
    Apr 6, 2017
    6
    我能怎么办我也很绝望啊
    yangqi
    yangqi
    Apr 6, 2017❤️3
    7
    回家睡一觉,假装今天不存在,明天重新开始
    minamike
    minamike
    Apr 6, 2017 via iPhone❤️4
    8
    充分证明 deadline 是第一生产力
    looplj
    looplj
    Apr 6, 2017
    9
    今天差点就这么干了。
    markx
    markx
    Apr 6, 2017
    10
    说明流程还可以改善一下。
    leisurelylicht
    leisurelylicht
    Apr 6, 2017
    11
    我今天也干了这么一把, 还好找回一个调试时留下的编译文件,还原出代码以后就下班了,心累。。。
    mahone3297
    mahone3297
    Apr 6, 2017❤️4
    12
    说明你今天工作量非常不饱满,其实 2h 就搞定了。。。
    zmj1316
    zmj1316
    Apr 6, 2017
    13
    真巧,我今天也把前几天的代码删了,是因为 merge 错 branch 了,结果 revert 的时候选了 hard ,把没 commit 的也一起 revert 了...
    47jm9ozp
    47jm9ozp
    Apr 6, 2017❤️3
    14
    mac 上有 timemachine 每小时备份
    linux 上有 btrfs + snapper 每小时一个 snapshot

    出问题顶多丢一个小时的东西……

    当然,除非 btrfs (又)炸了……
    xdream86
    xdream86
    Apr 6, 2017
    15
    干过同样傻事+1
    greatghoul
    greatghoul
    Apr 6, 2017
    16
    干过同样的傻事 +1
    NonClockworkChen
    NonClockworkChen
    Apr 6, 2017
    17
    @ooxxcc 这是 CentOS 的独有功能吗,Ubuntu 非 btrfs....有替代方案吗...
    searene
    searene
    Apr 6, 2017❤️1
    18
    我也干过类似的事情,用 intellij 的 local history 找回来了
    xioyan
    xioyan
    Apr 6, 2017
    19
    这个没做过,不过就是写论文的时候忘记了保存而已
    mritd
    mritd
    Apr 6, 2017 via iPhone
    20
    @NonClockworkChen 不是 centos 专有的,是一个 linux 分区格式,类似 ext4 一样,出现的目的就是为了弥补当前一些文件系统的缺陷
    crab
    crab
    Apr 6, 2017
    21
    不能明天上班再写一次吗 = =!
    47jm9ozp
    47jm9ozp
    Apr 6, 2017
    22
    @NonClockworkChen 不是 CentOS ,我用的 archlinux ……只要文件系统是 btrfs 就行, snapper 自己可以装

    替代方案没考虑过……新挂个分区 /镜像格式化成 btrfs/zfs 这类支持 snapshot 的文件系统就好……
    jimmy66
    jimmy66
    Apr 6, 2017 via iPhone
    23
    心疼一波前辈😂
    vingz
    vingz
    Apr 6, 2017❤️3
    24
    所以用 git rm 命令,不要用 rm -rf
    或者用 git clean 命令,
    git 库管理尽量使用 git 命令,可以在 reflog 里回退
    cinhoo
    cinhoo
    Apr 6, 2017❤️1
    25
    @NonClockworkChen #17 btrfs 有提供工具( btrfs-convert )将 ext{3, 4}转换成 btrfs 。但 snapper 在 arch 上一直报权限错误,最后用的这个 https://github.com/jf647/btrfs-snap
    47jm9ozp
    47jm9ozp
    Apr 6, 2017
    26
    @cinhoo 我之前也用这个,后来觉得还是 snapper 灵活一点,供参考
    权限错误怎么说……没碰到
    qk3z
    qk3z
    Apr 6, 2017 via Android
    27
    我已经干过两次了-_-
    bp0
    bp0
    Apr 6, 2017
    28
    我也干过一次,充分说明设计才是最费时间的。码代码真的跟搬砖一样是体力活。
    cinhoo
    cinhoo
    Apr 6, 2017
    29
    @ooxxcc #26 直接命令行创建 snapshot 是没问题的,但是 cron 创建的时候就报 No Permission 。要说是 cron 的问题好像也不是, snapper 和 btrfs-snap 的任务都是放在 cron.{hourly,day...}下的。后面直接用了 btrfs-snap ,不管了。
    ydxred
    ydxred
    Apr 6, 2017❤️1
    30
    有一个周六的晚上!我写了一个晚上的文章 要发博客的!因为电脑开的程序比较多...在四点的时候电脑死机了!只有重启电脑才能好!你们都知道 simplemde 吧!博客的富文本编辑器就会他!没有自动保存的功能那种!我当时的内心你们可能感受不到!写到半夜四点啊 没了!后来我学聪明了 在简书写 !写了在复制到我博客上 ....
    yruite
    yruite
    Apr 6, 2017
    31
    我想起一个笑话:一个小蝌蚪拼命地游啊游,打败了所有的对手,到达终点时发现只是一张纸巾
    v2xeuser
    v2xeuser
    Apr 6, 2017
    32
    这种错误我应该不会再犯 理论上
    taozhijiangscu
    taozhijiangscu
    Apr 6, 2017
    33
    昨天干了类似的事情,原来打算删调试机上代码的,结果把开发机上的代码删掉了。

    幸亏我机制将代码放到 Dropbox 可以触及的地方。

    话说现在 Dropbox 改版了,误删的文件恢复起来更便捷了
    morewe
    morewe
    Apr 6, 2017
    34
    刚工作的时候曾经把我和一个同事 2 , 3 天的代码给删了,囧。
    Archangel_SDY
    Archangel_SDY
    Apr 6, 2017❤️4
    35
    曾经花 2h 魔改一个程序,费好大劲把编译错误都修完,一运行,然后这货就把自己目录连同自己都删了...
    singer
    singer
    PRO
    Apr 6, 2017 via iPhone
    36
    线上线下两台服务器配置一模一样,线上是绝对不用 rm -rf./*的,昨天早上上班,手滑点错 shell 界面了,连到线上去了。
    而且手滑,/不知道为啥没输入,你猜怎么样吧。
    快照回退到一星期前,线下版本部署上去。差点吓晕过去。。。。
    bombless
    bombless
    Apr 6, 2017 via Android
    37
    ……从来不需要 rm *,不过试过用 git clean 时犯类似的错(
    HuangLibo
    HuangLibo
    Apr 7, 2017
    38
    sudo rm -rf / 是一个更强大的命令, 楼主可以试试.
    XnEnokq9vkvVq4
    XnEnokq9vkvVq4
    Apr 7, 2017 via Android❤️1
    39
    花两个小时回忆起代码 不等于 创作代码只需要两小时,这应该不难理解吧,就像你写一篇文章要一个小时,复述这篇文章可能只要 5 分钟
    bazingaterry
    bazingaterry
    Apr 7, 2017
    40
    干过同样的傻事 +1
    DioV
    DioV
    Apr 7, 2017
    41
    (手动滑稽
    sheep3
    sheep3
    Apr 7, 2017
    42
    干过...... 不过多亏了 idea
    ljcarsenal
    ljcarsenal
    Apr 7, 2017
    43
    微软也用 linux ?
    msg7086
    msg7086
    Apr 7, 2017
    44
    没遇到过这种破事。自以为没信心手工跑 Git ,所以都让工具帮我做,省心。
    libook
    libook
    Apr 7, 2017❤️1
    45
    请养成下列习惯:
    勤开分支
    写完一个小模块或小改动就马上提交
    勤推送提交和分支

    push 禁止加--force
    reset 禁止加--hard
    commit 禁止加-a



    话说实际上 git 的每一个提交都应该是明确的“一件事”,写一天的代码如果能拆成几件事的话就最好及时分几次提交,而不是等一天甚至几天写完再提交,任何工作都应该新开一个分支进行开发和提交,因为保不齐会尝试多种方案以及对原分支的紧急修改上线。
    icylogic
    icylogic
    Apr 7, 2017
    46
    一直在 Dropbox 里写代码
    为什么都这么喜欢 rm -rf ,用回收站多好 ……
    ryd994
    ryd994
    Apr 7, 2017 via Android❤️1
    47
    看成了临下班前一天把代码全删了
    还以为离职前一天删代码跑路
    lsmgeb89
    lsmgeb89
    Apr 7, 2017
    48
    rm 可以找回来的,很容易。

    但是有一次我误把代码覆盖了,真找不回来了。

    用的 Perforce ,不是 Git
    darrenfang
    darrenfang
    Apr 7, 2017 via iPhone
    49
    试试这个命令 git fsck --lost-found ,没 add 的不知道能不能找回
    xiaket
    xiaket
    Apr 7, 2017
    50
    ~/.vim/backup 救了我若干次
    maguowei
    maguowei
    Apr 7, 2017
    51
    intellij 的 local history +1
    dinghua
    dinghua
    Apr 7, 2017
    52
    祸兮福所倚, 说不定再写一遍代码质量会更高呢
    reHuo
    reHuo
    Apr 7, 2017
    53
    local history +1
    Mutoo
    Mutoo
    Apr 7, 2017
    54
    有 local history ,即使删除掉关机重启都不怕。
    mcds
    mcds
    Apr 7, 2017
    55
    这事儿我也干过,当时文件系统是 ext3 ,想用 extundelete 恢复必须得 unmount 硬盘,公司不让 unmount (老爷机,上次重启硬盘就挂了),最后跟楼主一样,花了两个小时又重新写了一遍...
    discrete
    discrete
    Apr 7, 2017 via iPad
    56
    这时候安利一下我的项目:

    https://github.com/alanzchen/rm-protection

    因为 GitLab 误删事故而造出来的东西。
    chinawrj
    chinawrj
    Apr 7, 2017
    57
    竟然不是写一段代码提交一段代码。也是醉了。
    chinawrj
    chinawrj
    Apr 7, 2017
    58
    不是手贱的问题啊,是习惯问题。谁也不能保证自己在关键时候不出错,所以只能过一段时间提交一次,把损失降到最低。
    lrh3321
    lrh3321
    Apr 7, 2017
    59
    中午吃饭前不提交一次?
    yang2yang
    yang2yang
    Apr 7, 2017
    60
    程序员的日常
    47jm9ozp
    47jm9ozp
    Apr 7, 2017
    61
    @cinhoo 微妙,反正能用就行,不管了……
    zxq1002
    zxq1002
    Apr 7, 2017 via Android
    62
    @zmj1316 已经 commit 过不用怕, git reflog
    nameldk
    nameldk
    Apr 7, 2017
    63
    Local History 分分钟找回。
    SummerWQM
    SummerWQM
    Apr 7, 2017
    64
    commit 啊
    Clarencep
    Clarencep
    Apr 7, 2017
    65
    以前干过类似这种的蠢事,还好 IdeaJ 有 Local history. 现在用 vscode 的时候果断也装了个 local history 的插件
    deepzz
    deepzz
    Apr 7, 2017
    66
    rm -rf *是什么鬼,为什么会有这个操作
    lwbjing
    lwbjing
    Apr 7, 2017
    67
    曾经为了这事儿,我加了一整个周末的班。。
    licraft
    licraft
    Apr 7, 2017
    68
    git 好像有回退执行过的指令的功能的
    wizardoz
    wizardoz
    Apr 7, 2017
    69
    没关系,写过的代码重写一遍会更整洁。
    zzczzc
    zzczzc
    Apr 7, 2017
    70
    我也被 intellij 的 local history 拯救过
    blacklee
    blacklee
    Apr 7, 2017
    71
    习惯不好。
    我用最简单的 VIM+git ,几年了也没出这样的事。
    不过前几天我把自己的数据库数据改错了,气得我几天没干活,一直在反思。
    jkneedout
    jkneedout
    Apr 7, 2017 via iPhone
    72
    yujieyu7
    yujieyu7
    Apr 7, 2017
    73
    没事一定要 add commit push 一下啊
    waye
    waye
    Apr 7, 2017
    74
    曾经把写了一个月的代码 del 掉了, 花了一个星期 恢复出来, 23333333
    lyragosa
    lyragosa
    Apr 7, 2017
    75
    local history 再次立功!
    fan1234nm
    fan1234nm
    Apr 7, 2017
    76
    Local History 分分钟找回啊
    fds
    fds
    Apr 7, 2017
    77
    所以要随时 commit 呀。嫌历史不好看,提交前 rebase -i 整理成一个就好了嘛。
    justfindu
    justfindu
    Apr 7, 2017
    78
    我前几天也做了这个事儿 切回分支然后懵逼
    justfindu
    justfindu
    Apr 7, 2017
    79
    神器啊~ local history 再次立功了
    zacard
    zacard
    Apr 7, 2017
    80
    idea local history
    reus
    reus
    Apr 7, 2017
    81
    zfs 或者 btrfs + 自动 snapshot 。
    我是 5 分钟一次,所以丢也只会丢 5 分钟内的。
    yuyu2140
    yuyu2140
    Apr 7, 2017
    82
    local history +10086 次拯救
    ShadowsocksR18
    ShadowsocksR18
    Apr 7, 2017
    83
    我上一个单位,还有管理员辞职前在 SVN 上删了一个月的代码呢……
    8355
    8355
    Apr 7, 2017
    84
    local history 真的有用
    一天都不 add 和 commit 一下?
    easing
    easing
    Apr 7, 2017
    85
    哈哈,也干过这种事情,后来就再也没犯过了
    woai110120130
    woai110120130
    Apr 7, 2017
    86
    之前上过一次写了一周的,做的一个挺大的需求,写了一个月. 因为总是喜欢在干净的分支上开发代码,总是把项目 rm -rf 删掉之后再重新 sync 下来开发,有次来了个新的紧急 bug ,就脑袋一热把写了一星期的代码删掉了....
    后来总结是流程有问题,改成每天下班把代码提交到服务器(不合入),之后追加上去
    zcljy
    zcljy
    Apr 7, 2017
    87
    @icylogic 回收站写代码笑尿。。
    tyhunter
    tyhunter
    Apr 7, 2017
    88
    @yruite 也可能是直肠和食道
    vingz
    vingz
    Apr 7, 2017
    89
    @ydxred 感受过,抓狂;
    曾经在一个网站写回答,写了很久的长篇,然后点提交,它告诉我提交失败,回退后发现什么都没有了,要死要死的感觉。
    Halry
    Halry
    Apr 7, 2017 via Android
    90
    试过在手提上写了一堆代码,现场没有调试工具,盖上后拿回家
    tm 打开后解锁卡在登陆界面。。。
    lk1ngaa7
    lk1ngaa7
    Apr 7, 2017
    91
    刚好重构一次
    l1093178
    l1093178
    Apr 7, 2017
    92
    @libook reset 加 --hard 也可以通过 reflog 找回来(除非你有 没提交的更改,不过这样的话用 reset 本来就很危险)
    libook
    libook
    Apr 7, 2017 via Android
    93
    @l1093178 就是习惯而已,不推荐用,不是不能用。
    zhangguanzhang
    zhangguanzhang
    Apr 8, 2017
    94
    @HuangLibo 你听说过 chmod -Rf 0000 /*吗
    HuangLibo
    HuangLibo
    Apr 11, 2017
    95
    @zhangguanzhang
    承让, 我只把 / 用 compress 处理过, 大家殊途同归
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   936 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 307ms · UTC 21:52 · PVG 05:52 · LAX 13:52 · JFK 16:52
    ♥ Do have faith in what you're doing.