首页 > 解决方案 > Git:恢复已添加但未提交的消失文件

问题描述

四个星期前我开始使用 git 在两台计算机之间同步文件。最近两周我没有提交任何更改。昨天我想添加第三台计算机。匆忙中,我在计算机 1 上运行了一些命令来创建一个新分支 ( PreAlgo) 并提交过去两周的更改。在计算机 3 上并行,我试图获取 repo 的当前状态。

不幸的是,我在计算机 1 上添加的所有文件都消失了。我可以从两台计算机上恢复我所有的 git 命令和来自 Matlab 历史记录的一些响应。但由于我同时在两者上工作,我无法恢复两台计算机之间的命令顺序。

我知道下面的代码是如何不使用 git 的示例。计算机 1 的初始分支是AddFinEval. 我知道我犯了很多错误。非常感谢恢复文件的提示。

命令计算机 1

>> ! git branch PreAlgo
>> ! git commit -m "PreAlgo" --all
>> ! git push origin PreAlgo
>> ! git add PredictAvailability.m    % this file did not diasappear
>> ! git commit -m "PreAlgo" --all
>> ! git push origin PreAlgo
>> ! git add AlgorithmPlayground\     % files from this path disappeared
>> ! git add Predictions              % files from this path disappeared
>> ! git commit -m "PreAlgo" Initialisation.m
>> ! git push origin PreAlgo
>> ! git commit -m "PreAlgo" Initialisation.m
>> ! git push
>> ! git checkout PreAlgo
>> ! git commit -m "PreAlgo" --all
>> ! git checkout AddFinEval
Switched to branch 'AddFinEval'
>> ! git commit -m "PreAlgo" --all
Untracked files:
   (list of some untracked files that did not disappear)
nothing added to commit but untracked files present (use "git add" to track)
>> ! git push origin AddFinEval
To https://github.com/myname/myrepo

命令计算机 3

>> ! git fetch --all
>> ! git reset --hard origin/master
>> ! git pull
>> ! git fetch --all
>> ! git reset --hard origin/master
>> ! git pull
>> ! git checkout PreAlgo
>> ! git fetch --all
>> ! git reset --hard origin/master
>> ! git checkout AddFinEval
>> ! git fetch --all
>> ! git reset --hard origin/master
>> ! git fetch --all
>> ! git reset --hard origin/AddFinEval

正如这里提出的如何恢复被 git 删除的文件?, 我试过了

! git fsck --lost-found
! ls .git/lost-found/other

但是我在 lost-found 中找到的两个文件只包含它们的标题。但是,在我发现文件消失时创建了.git/objects/pack一个 600MB的文件。.pack其中一个消失的文件夹包含一些大.mat文件。

标签: gitfilerecover

解决方案


推荐阅读