Git: восстановить исчезнувшие файлы, которые были добавлены, но не зафиксированы

Я начал использовать git четыре недели назад для синхронизации файлов между двумя компьютерами. Последние две недели никаких изменений не делал. Вчера хотел добавить третий комп. В спешке я выполнил несколько команд на компьютере 1, чтобы создать новую ветку (PreAlgo) и зафиксировать изменения за последние две недели. Параллельно на компьютере 3 я пытался получить текущее состояние репозитория.

К сожалению, все файлы, которые я добавил на компьютер 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 я нашел файл .pack размером 600 МБ, созданный примерно в то время, когда файлы исчезли. Одна из исчезнувших папок содержала несколько больших .mat файлов.


person konjunkturkrise    schedule 03.10.2020    source источник
comment
Я не вижу ничего катастрофического в командах на компьютере 1 - это тот случай, когда файлы, которые вы добавили в PreAlgo, просто не включены в AddFinEval? Я думаю, вы должны просто иметь возможность проверить PreAlgo? (Но я думаю, что вам может пригодиться некоторая ревизия ветвления git)   -  person 9bO3av5fw5    schedule 03.10.2020
comment
Большое спасибо за ваш ответ @ 9bO3av5fw5, вы были правы! Я обнаружил, что файлы отсутствуют после того, как Matlab начал создавать много новых файлов, которые были сохранены в Predictions. Когда я попытался оформить заказ в PreAlgo, я получил error: The following untracked working tree files would be overwritten by checkout: и список с новыми созданными файлами, который был слишком длинным для полного отображения. Таким образом заканчивается Aborting. Сначала не решался попробовать прошивать или удалять новые файлы. Но теперь я это сделал, проверил на PreAlgo и все недостающие файлы у меня там.   -  person konjunkturkrise    schedule 03.10.2020