【问题标题】:Git was roll backed to previous version due to SSD Fail由于 SSD Fail,Git 回滚到以前的版本
【发布时间】:2019-06-13 23:40:33
【问题描述】:

由于 SSD 故障,我的专用服务器在一天前崩溃了。托管公司将我的服务器恢复为 2 天前的备份。

构建中的 git 现在将当前更改与 2 天前的更改进行比较,并将新创建的文件跟踪为 deleted。如何将服务器上的构建重新同步到 git 上的最新构建?

【问题讨论】:

    标签: git github ssh


    【解决方案1】:

    按照您提到的操作顺序,如果您在这 2 天内对 master 分支进行了一些额外的修改,则您已将它们从 master 分支中删除。

    幸运的是,如果是这种情况,您仍然可以从本地 repo 中找到您的提交:

    1. 运行git reflog master

      您应该会看到如下输出:

      110f738 (HEAD -> master, bare/master) master@{0}: reset: moving to origin/master
      224e68f master@{1}: commit: **commit message**    # <- this commit
      1a58e62 master@{2}: commit: **commit message**
      ...
      
    2. 您可以使用出现在 reset: moving to origin/master 行之前的提交的哈希

      例如运行:

      # assuming you are on your local 'master' branch :
      
      # re-set master to its previous state :
      git reset 224e68f
      
      # push it to your server :
      git push origin master
      

    【讨论】:

      【解决方案2】:

      一个非破坏性的动作序列是:

      1. 获取所有更改:

        git fetch --all
        
      2. 更新远程主分支:

        git push origin master
        
      3. 更新任何其他相关分支:

        git push origin my/feature1
        git push origin my/bugfix
        

      【讨论】:

        【解决方案3】:

        以下解决了我的问题(考虑到 master 是你的分支):

        1. 首先获取所有更改:

          git fetch --all

        2. 然后重置master:

          git reset --hard origin/master

        3. 拉取/更新:

          git pull origin/master

        参考:Git Pull While Ignoring Local Changes?

        【讨论】:

        • 警告:这一系列操作还将删除您自恢复日期以来在本地所做的更改
        猜你喜欢
        • 2021-08-10
        • 1970-01-01
        • 2019-01-24
        • 1970-01-01
        • 1970-01-01
        • 2011-08-09
        • 1970-01-01
        • 2023-01-29
        • 1970-01-01
        相关资源
        最近更新 更多