2015-03-24 4 views
3

Я пытаюсь оформить ветку, но постоянно получаю эту ошибку:Не удается удалить файл из рабочего каталога

error: Your local changes to the following files would be overwritten by checkout: 
     file.txt 
Please, commit your changes or stash them before you can switch branches. 
Aborting 

Однако:

  • Когда я stash, ничего не меняется. file.txt все еще находится в рабочем каталоге .
  • Когда я add файл, а затем stash, он возвращается в рабочий каталог .
  • Когда я reset --hard, ничего не меняется. file.txt все еще находится в рабочем каталоге.
  • Когда я checkout -- текущая ветка, ничего не меняется. file.txt все еще находится в рабочем каталоге.
  • Я даже попробовал git rm -f file.txt, а затем stash. Не помогает.

И после выполнения всего этого, я все еще не могу проверить другую ветку, потому что я застрял в файле file.txt.

Как я могу объяснить, что здесь происходит? И как мне избавиться от file.txt?

Я работаю с git-scm на Windows, если это имеет значение.

EDIT:git diff --check показывает, что существует разница в пробелах в пробелах. Почему git просто не может обрабатывать конечные пробелы так же, как и любую другую разницу в текстах, и вместо этого действует так странно, не позволяя мне reset или stash? Является ли это поведение настраиваемым?

ответ

1

Мы закончили удаление настроек text=auto, потому что мы все работы на Windows, так или иначе. Теперь линейные окончания Windows хранятся в репозитории и, похоже, решили проблему.

1

Скорее всего, репозиторий содержит как File.txt, так и file.txt (что могло произойти, если вы работаете с людьми, использующими Linux или Mac). Windows думает, что это тот же файл, поэтому только один из них будет существовать в рабочем каталоге, и git всегда будет думать, что другой изменен.

Чтобы проверить, действительно ли это проблема, выполните следующую команду:

git ls-tree -r HEAD 

и искать файлы с различным корпусом в том же каталоге (или каталоги с различным корпусом).

Самый простой способ исправить это - заставить кого-то на другой платформе удалить или переименовать любой файл.

(Если ваш проект каким-то образом зависит от наличия обоих файлов, решение должно либо переосмыслить это требование, либо отказаться от Windows ...)

+0

Спасибо за идею, но это не так (никакие каламбур не предназначались :)) –

+0

: D - Есть ли какие-либо неанглийские символы в имени или пути файла? –

+0

Нет, все символы принадлежат '[a-zA-Z.]' –

1

Вы можете иметь проблемы с концами строк прочитал следующее:

https://help.github.com/articles/dealing-with-line-endings/

Короче, попробуйте изменить .gitattributes файл следующим образом:

* text=auto => #* text=auto 

Или

git config --global core.autocrlf true 

Другой вариант - совершить fi ле

Все зависит от того, если все разработчики работают на той же платформе, или нет ..

+0

Настройки уже упомянуты. –

Смежные вопросы