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

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

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

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 sparse checkout? связан, но намного старше и не совсем описывает то, что я вижу.


person krlmlr    schedule 06.03.2013    source источник


Ответы (2)


Это не по дизайну. Поведение изменено в Git 1.8.3.

person krlmlr    schedule 16.05.2013

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

git reset --hard

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

person Chronial    schedule 07.03.2013