Если файлы были добавлены, но не зафиксированы, они изначально находились в индексе / рабочей области.После использования 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
может быть вариантом, но я никогда не использовал его.