Ответ 1
Это не по дизайну. Поведение изменилось в Git 1.8.3.
В разреженном сценарии проверки команда 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 1.8.3.
Я уверен, что это по дизайну. Вы активно заказываете git для создания всего этого файла, поэтому он делает это. Правильная команда для возврата к состоянию последнего фиксации:
git reset --hard
Это также должно учитывать ваши редкие настройки проверки.