Лучший способ восстановить промежуточные файлы после удаления через * NIX 'rm'? - PullRequest
0 голосов
/ 17 октября 2018

Какой рекомендуемый метод восстановления файлов рекомендуется использовать в этом сценарии:

Пользователь изменяет файлы в своей рабочей области Linux.Она запускает «git add» и ставит их.Она не совершает их.Время проходит.Она случайно удаляет все измененные файлы, используя «/ bin / rm» (, а не «git rm»).

Теперь «git status» сообщает о них как о «удаленных» (правильно).Рекомендуется запускать «git reset HEAD file » и «git checkout - file » для каждого (неверно).Это привело к тому, что последние версии (HEAD) каждого остались в ее рабочем пространстве, а не те, которые содержали ее поэтапные изменения.Помимо запуска git fsck и попытки разрешить различные ссылки SHA, что пользователь должен сделать сейчас, чтобы восстановить изменения, которые он изначально поставил?

1 Ответ

0 голосов
/ 17 октября 2018

Если файлы были добавлены, но не зафиксированы, они изначально находились в индексе / рабочей области.После использования rm вторая рекомендация (т. Е. git checkout -- <file>), заданная git status, оказалась правильной, так как она проверяет файл из индекса в рабочем каталоге.

Я предполагаю, что вы выполнили обаКоманды, которые вы перечислили, в следующем порядке:

git reset HEAD <file>
git checkout -- <file>

К сожалению, это привело к тому, что команда сброса сначала удалила промежуточные файлы из индекса, вернула его к более ранней зафиксированной версии и отменила эти изменения.И затем извлечение помещает этот файл в каталог.

Вы можете легко проверить это:

git init
echo "my content" > somefile.txt
git add somefile.txt
git commit -am "commit"
echo "more content" >> somefile.txt
git add somefile.txt
rm somefile.txt
git status
git checkout -- somefile.txt

Прямо сейчас git-recover может быть вариантом, но я никогда не использовал его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...