求大神帮看下怎么恢复误删并 push 的文件(附操作记录) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
kchum
V2EX    git

求大神帮看下怎么恢复误删并 push 的文件(附操作记录)

  •  
  •   kchum 2014-04-15 01:52:09 +08:00 4930 次点击
    这是一个创建于 4253 天前的主题,其中的信息可能已经有所发展或是发生改变。
    真是No zuo no die。
    前段时间刚上手git,就用来部署线上代码。
    其实这段时间还都挺好的,不用每次修改都scp。

    但今天不知道怎么会删掉了一些文件。
    开了ss,Gist还是打开很慢,各位将就看下我的操作记录吧

    我的思路很简单,服务器运行这么些天,增加了不少图片,是没有放进远端仓库的。
    先在服务器端git commit -a了这些图片,然后本地仓库git pull,本地修改代码后git commit -a,然后本地git push。不知道我思路哪里出错了。。(没错,我按照svn的思路了。。)

    操作记录如下
    服务器:

    1.git commit -am 'update';
    确实有几百张图片加入仓库了

    2.git status
    # On branch master
    nothing to commit (working directory clean)
    说明已经没有新的改动了

    本地操作
    1.git pull
    remote: Counting objects: 254, done.
    remote: Compressing objects: 100% (206/206), done.
    remote: Total 206 (delta 20), reused 0 (delta 0)
    Receiving objects: 100% (206/206), 12.70 MiB | 76.00 KiB/s, done.
    Resolving deltas: 100% (20/20), completed with 20 local objects.
    From xxx:/www/web/xxxcom/
    51c91d8..fe6c6c6 master -> origin/master
    Updating 51c91d8..fe6c6c6
    error: Your local changes to the following files would be overwritten by merge:
    public_html/data/config.inc.php
    public_html/data/tasks.inc.php
    Please, commit your changes or stash them before you can merge.
    Aborting

    因为config.inc.php,tasks.inc.php是数据库配置,我之前用git undate-index --assume-unchanged file忽略掉,所以提示Aborting

    2.修改bug,然后git commit -am 'fix images not show in detail'
    [master 5aaf3a2] fix images not show in detail
    4 files changed, 19 insertions(+), 4 deletions(-)
    没错,是改了4个文件

    3.git push
    To xxx:/www/web/xxxcom/.git
    ! [rejected] master -> master (non-fast-forward)
    error: failed to push some refs to 'xxx:/www/web/xxxcom/.git'
    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Integrate the remote changes (e.g.
    hint: 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    失败了,猜想大概是因为本地git pull Abort的那2个文件

    4.git push -f origin master
    尝试性的这样提交。。然后就悲催了
    Counting objects: 21, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (10/10), done.
    Writing objects: 100% (10/10), 1.10 KiB | 0 bytes/s, done.
    Total 10 (delta 8), reused 0 (delta 0)
    remote: Push to checked out branch refs/heads/master
    remote: W:unstaged changes found in working copy
    remote: W:stashing dirty working copy - see git-stash(1)
    remote: Saved working directory and index state On (no branch): dirty working copy before update to 5aaf3a2ea32bb30cf367dcf713a2031dee00f75e
    remote: HEAD is now at fe6c6c6 update
    remote: trapped 9133
    remote: Updating working copy
    remote: M public_html/app/goods.app.php
    remote: M public_html/app/shop.app.php
    remote: M public_html/app/cart.app.php
    remote: M public_html/data/config.inc.php
    remote: D public_html/data/files/store_44/goods_1/201404101820016058.jpg
    remote: D public_html/data/files/store_44/goods_10/201403301603305815.jpg
    ***
    remote: D 100多个文件
    ***
    remote: HEAD is now at 5aaf3a2 fix images not show in detail
    To xxx:/www/web/xxxcom/.git
    + fe6c6c6...5aaf3a2 master -> master (forced update)
    然后服务器上的remote: D的文件都删除了。。。
    我想不明白,本地也没有删除啊,怎么就push会有呢?

    5.git status
    On branch master
    Your branch is up-to-date with 'origin/master'.

    本地仓库,远端仓库项目目录已经备份(吃大亏了,必须这么做)。

    尝试解决方法:
    1.我尝试性在服务器目录git log

    commit 5aaf3a2ea32bb30cf367dcf713a2031dee00f75e
    Author: xxxx <[email protected]>;
    Date: Mon Apr 14 17:04:37 2014 +0800

    fix images not show in detail

    commit 51c91d833a62709713d6ff1be6f48aa3ec14fe4a
    Author: xxxx <[email protected]>;
    Date: Fri Apr 4 14:36:00 2014 +0800

    fix htaccess

    居然没有17:04:37前的 'update',费解。。。

    2.单个文件也尝试过,没用
    git checkout deleted-file
    #error: pathspec 'deleted-file' did not match any file(s) known to git.

    3.git ls-files deleted
    没有删除文件

    弄了一晚上,没找到解决方案,烦啊。

    请问下该如何恢复,或者可以尝试哪些方法恢复。麻烦写清楚点步骤。。


    回复均送金币。
    只能以此为报,
    不能捡肥皂。

    谢谢大家看完这么长操作记录。
    第 1 条附言    2014-04-15 03:03:55 +08:00
    解决方法:
    1.git relog

    022ef50 HEAD@{0}: push
    5aaf3a2 HEAD@{1}:
    5aaf3a2 HEAD@{2}: push
    fe6c6c6 HEAD@{3}: commit: update

    2.git reset --hard fe6c6c6
    4 条回复    1970-01-01 08:00:00 +08:00
    lijinma
        1
    lijinma  
       2014-04-15 02:38:59 +08:00   1
    服务器上使用:

    git reflog 查找 'update'

    找到对应的commit 点;

    服务器只要你提交过,就不用怕,git reflog 记录你每一次操作过程;
    kchum
        2
    kchum  
    OP
       2014-04-15 03:01:20 +08:00
    @lijinma Cool!已解决!
    lightening
        3
    lightening  
       2014-04-16 01:54:16 +08:00 via iPhone   1
    嗯,楼上reflog正解。但是你永远不要force push到master。
    mengzhuo
        4
    mengzhuo  
       2014-04-16 07:24:03 +08:00   1
    而且建议不要reset --hard
    因为这样会丢失改动后的代码
    ----------
    p.s. 谁用tig,gitg谁知道哈哈哈~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2641 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 04:01 PVG 12:01 LAX 20:01 JFK 23:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86