2013-06-26 2 views
0

Итак, у меня есть хранилище git. Я использую git 1.7.9 под Cygwin/Windows 8.После использования git clean, я удалил файлы, обнаруженные как изменения?

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

Таким образом, я получаю странность, как это:

$ git reset --hard 
$ git status 
#untracked files 
foo 
$ git clean -fd 
removing foo 
$ git status 
#changes not staged 
D foo/bar/whatever.txt 

Но тогда, в другую сторону и добавить файлы:

$ git add foo 
$ git status 
# changes not staged 
A foo/bar/whatever.txt 

И если я совершаю оттуда, то это будет, конечно, выставлять сумасшедшие конфликты при попытке толчка.

Иногда git reset --hard исправляет это, но иногда нет. Я нашел лучший способ избавиться от него - это проверить новую ветку, удалить все в моей рабочей копии и запустить git reset --hard.

Неужели кто-нибудь еще испытывал это странное поведение? Я использую git-tfs, что может означать, что это ошибка в этом, но по большей части это обычный репозиторий git, поэтому я не думаю, что это имеет значение.

+2

Что находится в ваших '.gitignore' (и' foo/.gitignore' и 'foo/bar/.gitignore', если они существуют)? Кроме того, что означает 'git ls-tree -r HEAD - foo' рассказать вам о файлах в' foo', которые отслеживаются? Являются ли символические ссылки 'foo' или' bar' вместо каталогов? – twalberg

+0

возможно (но не вероятно) проблема с .gitattributes с концевыми линиями? Это не проблема git-tfs, потому что git-tfs не касается вашей папки рабочего пространства (особенно, когда вы ее не называете;)) – Philippe

+0

Кстати, вы пробовали перейти на git 1.8? –

ответ

0

git clean -fd пропускает файлы, соответствующие любой из записей в вашем .gitignore, что я предполагаю в этом случае. Поэтому убедитесь, что нет регулярного выражения foo/bar/whatever.txt в любом из ваших .gitignore s.

Наверху убедитесь, что foo/bar/whatever.txt не заблокирован, что может препятствовать очистке.