Які зміни 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(перевірка з останнього скоєного стану, замість виходу з індексу)?