git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
wwjvtwoex
V2EX  ›  git

Git 新手求助,恢复远程文件

  •  
  •   wwjvtwoex · Jan 9, 2018 · 4661 views
    This topic created in 3083 days ago, the information mentioned may be changed or developed.
    在远程 add 一个文件 X 后,没有 commit,没有和本地同步

    在本地修改了其他文件后,push 到远程
    远程文件 X 消失

    怎样能恢复远程文件 X
    25 replies    2018-01-10 09:23:22 +08:00
    LYEHIZRF
        1
    LYEHIZRF  
       Jan 9, 2018   ❤️ 1
    本地 fork 一个新的分支 然后原分支 git reset --hard 到远程提交文件的版本 即可恢复
    https://github.com/geeeeeeeeek/git-recipes/wiki
    wwjvtwoex
        2
    wwjvtwoex  
    OP
       Jan 9, 2018
    谢谢,我先试试
    wwjvtwoex
        3
    wwjvtwoex  
    OP
       Jan 9, 2018
    可以通过 回滚 恢复远程文件吗 ?
    wwjvtwoex
        4
    wwjvtwoex  
    OP
       Jan 9, 2018
    不创建新分支
    barryhappy
        5
    barryhappy  
       Jan 9, 2018
    @wwjvtwoex reset 就是回滚
    exch4nge
        6
    exch4nge  
       Jan 9, 2018
    没有 commit 的文件不能用 reset 回滚获得吧?
    话说我没理解你所说的在远程 add 一个文件 X,是指你直接在远程 repo 所在的计算机上进行操作,还是你在本机操作只不过在远程分支上?一般来说第一种可能性比较小,远程 repo 不是 bare 的话,push 操作会出现警告。

    假设是第二种含义的话,可以看看 git fsck --lost-found 这个命令能不能解决你的问题。但是你如果执行过 git gc 的话,就没有救了
    xiubin
        7
    xiubin  
       Jan 9, 2018
    “在远程 add 一个文件 X 后,没有 commit,没有和本地同步 ”,想问的是你是怎么在远程 add 一个文件的。。。
    如果你没有 commit 的话你应该是找不回来了,“ git reset --hard ” 也只是回滚到某一版本(某次 commit )
    不确定是你没有表达清楚还是一楼没看清楚或者是我理解错了
    tailf
        8
    tailf  
       Jan 9, 2018
    你这里的“远程”指的是什么?据我所知 Git server 是只有 .git 文件夹的。
    LYEHIZRF
        9
    LYEHIZRF  
       Jan 9, 2018
    没 commit 确实没办法了 没看清楚 @xiubin
    LYEHIZRF
        10
    LYEHIZRF  
       Jan 9, 2018
    不过楼主是怎么做到远程只 add 不 commit 的
    lonenol
        11
    lonenol  
       Jan 9, 2018
    远程 add 是个什么操作..
    jason19659
        12
    jason19659  
       Jan 9, 2018
    虽然每台机器都可以是 git 服务器。。但是。。你是怎么在服务器上 add 文件然后本地提交还没有冲突的
    wwjvtwoex
        13
    wwjvtwoex  
    OP
       Jan 9, 2018
    @LYEHIZRF #10 ssh 登入远程仓库所在的服务器(在另一个楼层),然后 git add some_file
    wwjvtwoex
        14
    wwjvtwoex  
    OP
       Jan 9, 2018
    然后一忙,忘了 commit
    然后 本地改了一些其它文件, push
    远程的 some_file 就消失了
    Rheinmetal
        15
    Rheinmetal  
       Jan 9, 2018
    .git\objects 里面 看看修改时间 不知道有没有
    没 commit 就麻烦了
    exch4nge
        16
    exch4nge  
       Jan 9, 2018
    @wwjvtwoex #13 这操作好强大... 好像也可以在远程仓库上 git fsck --lost-found 然后找
    likuku
        17
    likuku  
       Jan 9, 2018
    @wwjvtwoex [ssh 登入远程仓库所在的服务器(在另一个楼层),然后 git add some_file]

    那其实还是个 git client 呗,只是和你自己电脑不同的是,直接在 git 库所在电脑执行
    pagxir
        18
    pagxir  
       Jan 9, 2018 via Android
    明显是楼主没理解什么是
    pagxir
        19
    pagxir  
       Jan 9, 2018 via Android
    什么是分布式
    LYEHIZRF
        20
    LYEHIZRF  
       Jan 9, 2018
    @wwjvtwoex 学习了。。还有这种操作。。
    holy_sin
        21
    holy_sin  
       Jan 9, 2018
    本地能恢复,远端就能恢复
    tinybaby365
        22
    tinybaby365  
       Jan 9, 2018
    git reflog
    fan123199
        23
    fan123199  
       Jan 9, 2018
    直接在远程操作就是个危险操作。
    flniu
        24
    flniu  
       Jan 9, 2018
    @wwjvtwoex #17 说的没错,听起来只是另一个服务器上的 git client。你再 ssh 上去,git status 一下看看。
    yacolinqi
        25
    yacolinqi  
       Jan 10, 2018
    还有你的远程添加是? 类似于直接在线上 GitHub 添加一个 readme 之类的吗? 那你这个仓库提交的时候没提示你版本问题吗? 还是你提交的时候强制提交了?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   988 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 18:32 · PVG 02:32 · LAX 11:32 · JFK 14:32
    ♥ Do have faith in what you're doing.