Почему на только что скачанном репозитории Git выдает список измененных файлов?
Скачал репозиторий, сделал "git pull", но при выполнении "git status" почему-то показывает большой список измененных файлов. Делал "git reset" - не помогло, при новом выполнении "pull" пишет, что никаких изменений не было, ничего не скачивает, но список измененных файлов все равно остается. Подскажите, в чем проблема?
Сергей Кузнецов я настроил символ переноса строки, но ничего не изменилось. Если посмотреть изменения с помощью "git diff", то такое ощущение, что Git считает файл новым (все строки помечаются как добавленные).
Василий Банников Через "git clone". Похоже на то, что окончания строк, действительно изменены - в моем файле стоит "unix", а в файле с сервера - "windows", только непонятно, почему "diff" выдает такой результат.
Помог "git reset --hard" после "clone" с новыми настройками crlf. Если кто-то объяснит такое поведение, буду благодарен - почему после "clone" еще потребовался "reset". Клонировал в пустой каталог. Притом, "reset" без смены настроек переноса строк не давал результата.
photosho, само по себе изменение настроек не изменяет файлы. Reset фактически повторно распаковывает ветку в рабочий каталог с новыми окончаниями строк. Так понятно?
Файлы изменяются в момент вытаскивания их из репозитория в рабочий каталог. Чтобы настройки применились, требуется повторное вытаскивание с новыми настройками.
Сергей Кузнецов локальная ветка после "clone" уже с измененными окончаниями строк, поэтому "reset" не исправляет проблему, и нужен "clone", чтобы загрузить файлы заново, правильно я понял?
photosho, нет. Ты неправильно понял. Сама ветка при clone вообще не меняется.
Файлы модифицируются не во время clone/fetch, а во время checkout, вытаскивания их из локального репозитория в локальную рабочую папку. То что ты видишь у себя в папке, это не сама ветка, а её распакованное состояние (снимок) на какой-то момент.
Сергей Кузнецов тогда, по этой логике, "clone" не потребовалось бы, - если изменить настройки и сделать "reset", то он восстановит файлы с нормальными окончаниями строк из локального репозитория. Но почему-то "reset" не помогал - потребовалось именно выполнение "clone".
photosho, clone и не нужен. Чтобы выполнить clone повторно, тебе нужно полностью удалить и рабочую папку и репозиторий. Клонировать можно только в пустую папку. Clone первым делом скачивает удалённый репозиторий на твой компьютер, это тебе не нужно. Вторым шагом clone распаковывает (checkout) снапшот ветки в рабочий каталог.
reset --hard повторяет распаковку. reset без --hard не работал, так как по умолчанию используется метод --mixed, при котором рабочий каталог не меняется, поэтому проблема не решалась.