Git выписка. добавляет каталоги, исключенные изредка

В разреженном сценарии проверки команда git checkout . восстанавливает каталоги, которые следует игнорировать. Это по дизайну или потенциальная проблема в Git? Im используя git checkout ., чтобы отменить любые изменения, внесенные Ive в мою рабочую копию, - есть ли другая команда, которая будет делать то же самое и не будет страдать от этой проблемы?

Вот пример воспроизводимости:

rm -rf test
git init test
cd test
for f in a b c; do
  mkdir $f
  touch $f/$f
  git add $f/$f
  git commit -m "added $f"
done
git config core.sparsecheckout true
echo a > .git/info/sparse-checkout
echo b >> .git/info/sparse-checkout
git read-tree -m -u HEAD
ls
a b

До сих пор так хорошо. Здесь проблема:

git checkout .
ls
a b c

Кстати:

git --version
git version 1.7.10.4

Вопрос Почему исключенные файлы продолжают появляться в моем разреженном разрешении git?), но гораздо старше и не совсем описывают, что я вижу.

Ответ 2

Я уверен, что это по дизайну. Вы активно заказываете git для создания всего этого файла, поэтому он делает это. Правильная команда для возврата к состоянию последнего фиксации:

git reset --hard

Это также должно учитывать ваши редкие настройки проверки.