zoukankan      html  css  js  c++  java
  • 从Git仓库中恢复已删除的分支、文件或丢失的commit

    亲测可用

    因为自己 commit 并且 push 后 因为冲突 提交不了,不小心做了 rebase 代码被 覆盖

    用以下命令 还原:

    查看所有日志 并记下 hash 值

    git reflog

    然后用:
    git reset --hard 记下的hash值

    然后打开 eclipse 刷新一下代码就回来了.


    在使用Git的过程中,有时可能会有一些误操作
    比如:执行checkout -f 或 reset -hard 或 branch -d删除一个分支
    结果造成本地(远程)的分支或某些commit丢失
    可以通过reflog来进行恢复,前提是丢失的分支或commit信息没有被git gc清除

    一般情况下,gc对那些无用的object会保留很长时间后才清除的
    reflog是git提供的一个内部工具,用于记录对git仓库进行的各种操作
    可以使用git reflog show或git log -g命令来看到所有的操作日志

    恢复的过程很简单:

    1. 通过git log -g命令来找到我们需要恢复的信息对应的commit_id,可以通过提交的时间和日期来辨别。一个好的办法是运行:1、git log --since="2 weeks ago" -- myfile 可以2个星期期间的myfile历史;2、git log --branches="develop" 可以查看develop的commit

    2. 通过git branch recover_branch[新分支] commit_id 来建立一个新的分支
      这样,我们就把丢失的东西给恢复到了recover_branch分支上了。

    Q:如果是不小心执行了git reset,还有办法取消吗?
    A:git reflog 查看操作历史,找到之前 HEAD 的 hash 值,然后 git reset --hard 到那个 hash 即可。

    Q:怎样找回历史版本中删除的文件?
    A:先确定需要恢复的文件要恢复成哪一个历史版本(commit),假设那个版本号是: commit_id,那么
    git checkout [commit_id] -- <path_to_file>就可以恢复。

  • 相关阅读:
    GPG实践
    keepass数据库保存密码
    基于xammp搭建自己的网页
    《信息安全专业导论》第12周学习总结
    《信息安全专业导论》第11周学习总结
    基于python中tkinter的计算机实现
    《信息安全专业导论》第10周学习总结
    俄罗斯方块
    小学四则运算编程实践
    链表
  • 原文地址:https://www.cnblogs.com/wuyifu/p/5551436.html
Copyright © 2011-2022 走看看