V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zoombut
V2EX  ›  程序员

[悲剧] 写了一礼拜的代码被删除了。。

  •  
  •   zoombut · 2014-08-06 00:36:55 +08:00 · 7763 次点击
    这是一个创建于 3764 天前的主题,其中的信息可能已经有所发展或是发生改变。
    手贱。删除.pyc 文件。 rm -rf * *.pyc 没注意第一个'*' (git上只有一礼拜前的版本)
    74 条回复    2014-08-07 04:33:01 +08:00
    vicalloy
        1
    vicalloy  
       2014-08-06 00:42:36 +08:00
    一礼拜不提交,这是让大家膜拜的?
    akfish
        2
    akfish  
       2014-08-06 00:42:50 +08:00
    居然一个礼拜不commit。。。。。
    论随手commit的重要性。
    ejin
        3
    ejin  
       2014-08-06 00:45:21 +08:00

    markyangd
        4
    markyangd  
       2014-08-06 00:45:31 +08:00
    一个礼拜不提交,用git还何意义?
    vicalloy
        5
    vicalloy  
       2014-08-06 00:49:34 +08:00   ❤️ 5
    @livid 把 @ejin 处理下?
    ejin
        6
    ejin  
       2014-08-06 00:58:18 +08:00   ❤️ 7
    @vicalloy 这样的主题你让我回复什么好,一本正经的说你该定时同步备份数据,该用git,该用版本控制软件,该用xxx…… 人总是要吃亏的,吃亏了就学乖了。这些问题人家在失去数据那一刻的时候就明白了。

    每次都是死板回复的只有一种人,那就是机器人,不要让我去翻你的发言记录,任何人都不可能符合所有人的胃口,所以有block的功能,谢谢
    LINAICAI
        7
    LINAICAI  
       2014-08-06 00:59:21 +08:00
    神人。。。一礼拜的
    LINAICAI
        8
    LINAICAI  
       2014-08-06 01:01:35 +08:00
    话说,对这个多长时间提交一次,还真的很好奇,个人开发的话,我习惯是下班前提交一次,但是如果是重要模块和功能,就多提交一次。
    librae
        9
    librae  
       2014-08-06 01:03:41 +08:00
    extundelete恢复。
    过来人飘过
    siteshen
        10
    siteshen  
       2014-08-06 01:50:45 +08:00   ❤️ 2
    rm *.pyc
    find . -name '*.pyc' | xargs rm # 好吧,这不严谨,不过习惯了难改。。。
    # # zsh大Fa好,弃bash保平安。
    # $ rm -rf *
    # zsh: sure you want to delete all the files in ./testcd [yn]?
    GhostFlying
        11
    GhostFlying  
       2014-08-06 02:19:17 +08:00 via iPad
    只能说nozuonodie,任何一个小feature都应该Commit。 对我自己而言,一天Commit 10多次都很正常。

    话说iPad上的Chrome点单楼回复没效果是啥情况。
    andrewpsy
        12
    andrewpsy  
       2014-08-06 02:21:32 +08:00
    @siteshen +1, 刚想建议把高风险的命令弄成alias加一层保险。
    CupTools
        13
    CupTools  
       2014-08-06 04:30:02 +08:00
    懒人需要这个: http://www.backblaze.com
    Livid
        14
    Livid  
    MOD
       2014-08-06 04:32:38 +08:00
    把 Terminal 的字体调大一些吧。
    stevegy
        15
    stevegy  
       2014-08-06 06:09:46 +08:00
    应该养成ignore的好习惯
    kenzi
        16
    kenzi  
       2014-08-06 07:26:44 +08:00
    随时commit,然后下班前squash一次,然后push
    vietor
        17
    vietor  
       2014-08-06 07:48:14 +08:00
    形似:rm -fr / lib
    hanks315
        18
    hanks315  
       2014-08-06 08:12:04 +08:00 via iPhone   ❤️ 1
    之前写过一个rm别名,把删除文件移动到回收站,不过还没加批量处理的功能
    https://gist.github.com/hanks/48d4a5cbe5eb674ee914
    pepsin
        19
    pepsin  
       2014-08-06 08:13:32 +08:00
    删除一贯是用 Finder 来,安全保险许多
    Panic
        20
    Panic  
       2014-08-06 08:32:33 +08:00
    @vicalloy 同建议处理 @ejin, 我已经屏蔽掉。
    上班第一个帖子看这玩意真影响心情。
    thinkmore
        21
    thinkmore  
       2014-08-06 08:51:01 +08:00
    太冲动了
    penjianfeng
        22
    penjianfeng  
       2014-08-06 08:52:40 +08:00   ❤️ 1
    如果你是后悔,那么下面这个真实的故事你可以看看.
    当你不小心误删了数据时,请想一想日本哲学家中村元的事迹:他花费20年编纂了《佛教用语大辞典》,却被出版社把手稿弄丢了。于是他又花了8年时间重写了一遍。
    如果你是吐槽,没啥意义,自己删除的怪谁...
    jswxg
        23
    jswxg  
       2014-08-06 09:06:53 +08:00
    兄弟你这还算好的,我 rm -f -r / 后整个硬盘的数据都没了。。。
    nicodelee
        24
    nicodelee  
       2014-08-06 09:11:19 +08:00   ❤️ 1
    有类似的经历。建议:重写,每写完一个小功能/函数/模块,随手提交。
    记得要有耐心,别边写边“x,我真TM手贱”,不然又另外一个悲剧了。
    aliuwr
        25
    aliuwr  
       2014-08-06 09:17:42 +08:00   ❤️ 1
    @hanks315 可以安装一个叫 trash-cli 的包, Ubuntu 自带的源里就有.
    https://github.com/andreafrancia/trash-cli
    learnshare
        26
    learnshare  
       2014-08-06 09:27:51 +08:00
    Git 不提交,你拿它作甚?
    alvin2ye
        27
    alvin2ye  
       2014-08-06 09:31:30 +08:00   ❤️ 1
    重写质量会更好。
    tonghuashuai
        28
    tonghuashuai  
       2014-08-06 09:41:03 +08:00   ❤️ 1
    alias rm='mv --target-directory ~/.Trash'
    y10n
        29
    y10n  
       2014-08-06 09:45:50 +08:00   ❤️ 1
    楼主,把*.pyc加入到.gitignore就行了,不会再提交,你就不会手动去删了,悲剧就没有了。
    另外,一个功能需要写一礼拜的话,肯定不是深思熟虑,没有规划的,删掉了反而清静了,因为,你脑子想清楚了,一定会有神来之笔的。
    塞翁失马焉知非福,忘记保存、忘记提交、忘记中英文符号切换、忘记。。。这一切都是无用功的来源,出错先检查这些哦。
    dong3580
        30
    dong3580  
       2014-08-06 09:48:15 +08:00
    同样发生过,一礼拜的代码,还有数据库,直接del了,连渣都不剩。
    这件事教育我们要养成随手ctrl+s或者commit的习惯
    skybr
        31
    skybr  
       2014-08-06 09:54:38 +08:00
    alias python="python -B"
    yakiang
        32
    yakiang  
       2014-08-06 10:00:55 +08:00   ❤️ 1
    alias ls='ls --hide="*.pyc"'
    我一般是见到了就会想删所以现在眼不见心不烦,当然加入 .gitignore 是必须的
    jamesxu
        33
    jamesxu  
       2014-08-06 10:05:30 +08:00
    楼主先看看能不能把删除的东西恢复回来吧,以后记得多备份几份才是
    superbear
        34
    superbear  
       2014-08-06 10:05:32 +08:00
    论版本控制软件得使用以及即使提交得重要性,像@alvin2ye说的,说不定可以写得更好
    c742435
        35
    c742435  
       2014-08-06 10:08:16 +08:00
    上次硬盘坏掉,写了好久的代码丢失了
    不过重写之后比原来好很多!
    Wuvist
        36
    Wuvist  
       2014-08-06 10:10:45 +08:00
    git多提交就不说了;一般我都是把源码放在dropbox目录,所以变动是实时多机多版本备份。

    曾经误操作直接rm整个目录,淡定的去dropbox网页上revert回旧版即可。
    XadillaX
        37
    XadillaX  
       2014-08-06 10:24:26 +08:00
    随时 commit 的习惯。
    TimLang
        38
    TimLang  
       2014-08-06 10:24:45 +08:00   ❤️ 1
    装个oh-my-zsh吧,rm都会提示的,出错几率会小很多,。
    582033
        39
    582033  
       2014-08-06 10:27:39 +08:00
    如果文件git add过,就算没有commit 我记得也是能找回的
    mengzhuo
        40
    mengzhuo  
       2014-08-06 10:29:17 +08:00
    git多提交,服务器数据应该有2处备份,这不应该是业界常识吗……
    loryyang
        41
    loryyang  
       2014-08-06 10:29:46 +08:00
    额,养成每天随手commit的习惯,git本来就是让你多次commit的,你不用,git也救不了你了。。。
    Twinkle
        42
    Twinkle  
       2014-08-06 10:30:27 +08:00
    真是惨...
    zooooom
        43
    zooooom  
       2014-08-06 10:38:11 +08:00
    论每日提交的重要性
    rrfeng
        44
    rrfeng  
       2014-08-06 10:41:15 +08:00
    @siteshen
    find -delete
    lidashuang
        45
    lidashuang  
       2014-08-06 10:52:36 +08:00
    吃一堑长一智
    555
        46
    555  
       2014-08-06 10:54:25 +08:00
    赶紧提交一下
    shiny
        47
    shiny  
       2014-08-06 10:58:00 +08:00
    如果是 Mac 环境,开个 TimeMachine 在误删文件的时候还能找回。
    tokki
        48
    tokki  
       2014-08-06 11:01:49 +08:00
    写一行也要commite掉 本机的东西永远不靠谱的 比如硬盘有时候也会忽然坏掉
    zix
        49
    zix  
       2014-08-06 11:06:07 +08:00
    前段时间我也是 rm -rf 多加了一个星,然后把整个repo干掉了……

    还好距离上次提交时间较短,做的修改自己也还记得,于是滚回上一个版本了。

    所以,rm -rf 真的要慎重……
    zoombut
        50
    zoombut  
    OP
       2014-08-06 11:09:20 +08:00
    @TimLang zsh是提示了。手残了
    zoombut
        51
    zoombut  
    OP
       2014-08-06 11:11:35 +08:00
    @jamesxu rm 删除的似乎不能恢复
    xiaket
        52
    xiaket  
       2014-08-06 11:19:07 +08:00
    @ejin 请尽量让自己的回复能够对别人有帮助
    yxz00
        53
    yxz00  
       2014-08-06 11:26:10 +08:00
    这就是为什么我不喜欢命令行
    andrewpsy
        54
    andrewpsy  
       2014-08-06 11:28:40 +08:00 via iPad
    很多人说随时commit,两个问题
    1 不push出去有什么用,难道你们的commit直接联动push? 那amend改改的机会都没有了。
    2 写点东西就commit一下那repo里得多少垃圾信息啊

    我觉得隔个3-5小时rsync一下到Dropbox还算比较现实,你直接把repo建在Dropbox里那Dropbox自己的版本信息也得爆啊。
    zythum
        55
    zythum  
       2014-08-06 11:30:24 +08:00
    论随手commit的重要性。
    论没事tm备份的重要性。
    Wuvist
        56
    Wuvist  
       2014-08-06 11:39:23 +08:00
    @andrewpsy 一般开发都是在分支上,各独立分支有多commit,要不要push随意,反正是在独立分支,合并的时候只认merge commit,repo很清爽;我push前一般也会rebase/squash下。
    jk2r
        57
    jk2r  
       2014-08-06 11:43:39 +08:00
    之前也不小心删过。然后依靠万能的TimeMachine找回来了。10分钟前的代码
    shuangxi
        58
    shuangxi  
       2014-08-06 11:44:34 +08:00
    @penjianfeng 想知道哲学家靠什么吃饭过日子
    WhyLiam
        59
    WhyLiam  
       2014-08-06 14:37:05 +08:00
    我上周 `sudo rm -rf /User/用户名` 了,然后发现删的时间比平时久,果断 `Ctrl + C ` 了,至今还不知道我到底删了什么
    lalawue
        60
    lalawue  
       2014-08-06 15:02:46 +08:00 via iPhone
    如果觉得东西重要,就随手commit push,不过东西都是在失去后才知道重不重要
    coymail
        61
    coymail  
       2014-08-06 15:58:22 +08:00
    前几天手贱打了一条mv /* ../
    本来想打的是mv ./* ../
    orvice
        62
    orvice  
       2014-08-06 16:09:46 +08:00
    一个礼拜。。
    cpp255
        63
    cpp255  
       2014-08-06 17:14:11 +08:00
    吓死了,赶紧去 git add 下
    clippit
        64
    clippit  
       2014-08-06 17:25:55 +08:00
    试试 grep /dev/sda1 能不能恢复一些?
    yuankui
        65
    yuankui  
       2014-08-06 18:07:11 +08:00
    cat ~/.gitignoreglobal

    .*
    *.pyc
    railgun
        66
    railgun  
       2014-08-06 18:13:55 +08:00
    @coymail mv * ../ 不就行了?
    msg7086
        67
    msg7086  
       2014-08-06 19:16:42 +08:00
    @andrewpsy 可参考git-flow。如果实在觉得repo太乱,可以考虑在bitbucket/别的地方,开个私有副本,push往里扔,回头再squash到origin repo上去。
    coymail
        68
    coymail  
       2014-08-06 20:21:39 +08:00
    @railgun 确实,不过习惯性写./*
    banbanchs
        69
    banbanchs  
       2014-08-06 21:14:13 +08:00
    @andrewpsy rm -rf *是不会删掉隐藏文件的(就是以.开头的),也就是说.git文件夹还在,然后用git恢复就是了
    reusFork
        70
    reusFork  
       2014-08-06 21:15:24 +08:00
    bjhyyc
        71
    bjhyyc  
       2014-08-06 21:17:33 +08:00 via iPad
    rannnn
        72
    rannnn  
       2014-08-06 22:15:52 +08:00
    @zoombut 可以马上找回的嘛,只要不再写就好了
    rannnn
        73
    rannnn  
       2014-08-06 22:28:02 +08:00
    @WhyLiam Adoble的文件,因为都是A开头的。。。
    maple
        74
    maple  
       2014-08-07 04:33:01 +08:00
    我也就是一天,不过你一个礼拜未免有点太夸张了吧。存档在git还是很有用的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2072 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 16:15 · PVG 00:15 · LAX 08:15 · JFK 11:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.