Які зміни git diff
відображаються у файлі? У Windows я бачив проблеми із закінченнями рядків, що викликають подібні проблеми. У такому випадку подивіться, які налаштування ви маєте для git config core.autocrlf
та git config core.safecrlf
. Тут є деяка документація для цих налаштувань .
Я б сказав, якщо ви використовуєте git svn
для інтеграції з підривною роботою, тоді переконайтеся, що autocrlf
вимкнено. Як я можу сказати, він просто порушений у цій конфігурації, і це робить більшість інструментів думкою, що файли були змінені, коли ви зробили, checkout
щоб відновити будь-які зміни.
Якщо ви бачите проблему там, де ви робите git checkout
, а потім git status
показує, що файл все ще змінюється, і git diff
показує, що файл змінюється в кожному рядку файлу, то це проблема, яку ви бачите.
core.autocrlf
Якщо це правда, змушує git конвертувати CRLF в кінці рядків текстових файлів у LF під час читання з файлової системи та перетворювати у зворотному порядку під час запису до файлової системи. Змінна може бути встановлена на вхід, і в цьому випадку перетворення відбувається лише під час читання з файлової системи, але файли виписуються з LF в кінці рядків. Наразі, які шляхи вважати "текстом" (тобто піддаватися механізму автокреслення) вирішується виключно на основі вмісту.
core.safecrlf
Якщо це правда, робить перевірку git, якщо перетворення CRLF як кероване core.autocrlf є оборотним. Git перевірить, чи команда змінює файл у дереві робіт прямо чи опосередковано. Наприклад, створення файлу з подальшим перевіркою того самого файлу повинно отримати вихідний файл у робочому дереві. Якщо це не стосується поточного налаштування core.autocrlf, git відхилить файл. Змінна може бути встановлена на "попередження", і в цьому випадку git попередить лише про необоротне перетворення, але продовжить операцію. ...
git checkout HEAD -- index.htm
(перевірка з останнього скоєного стану, замість виходу з індексу)?