Jakie zmiany są git diffwidoczne w pliku? W systemie Windows widziałem problemy z zakończeniami linii powodujące takie problemy. W takim przypadku spójrz, jakie masz ustawienia git config core.autocrlfi git config core.safecrlf. Istnieje dokumentacja dotycząca tych ustawień .
Powiedziałbym, że jeśli używasz git svndo integracji z Subversion, upewnij się, że autocrlfjest wyłączony. Z tego, co mogę powiedzieć, jest po prostu zepsuty w tej konfiguracji i sprawia, że większość narzędzi uważa, że pliki zostały zmienione, gdy wykonałeś a, checkoutaby cofnąć wszelkie zmiany.
Jeśli widzisz problem w miejscu, w którym to robisz git checkout, a następnie git statuspokazuje, że plik jest nadal zmodyfikowany i git diffpokazuje, że plik jest zmodyfikowany w każdym wierszu pliku, to jest to problem, który widzisz.
core.autocrlf
Jeśli prawda, powoduje, że git konwertuje CRLF na końcu linii w plikach tekstowych do LF podczas odczytu z systemu plików i konwertuje odwrotnie podczas zapisu do systemu plików. Zmienną można ustawić na wejście, w którym to przypadku konwersja ma miejsce tylko podczas odczytu z systemu plików, ale pliki są zapisywane z LF na końcu linii. Obecnie, które ścieżki traktować jako „tekst” (czyli podlegać mechanizmowi autocrlf), jest ustalane wyłącznie na podstawie treści.
core.safecrlf
Jeśli prawda, sprawia, że git sprawdza, czy konwersja CRLF kontrolowana przez core.autocrlf jest odwracalna. Git sprawdzi, czy polecenie bezpośrednio czy pośrednio modyfikuje plik w drzewie roboczym. Na przykład zatwierdzenie pliku, a następnie wyewidencjonowanie tego samego pliku powinno dać oryginalny plik w drzewie roboczym. Jeśli tak nie jest w przypadku aktualnego ustawienia core.autocrlf, git odrzuci plik. Zmienną można ustawić na „ostrzeżenie”, w którym to przypadku git będzie ostrzegać tylko o nieodwracalnej konwersji, ale będzie kontynuować operację. ...
git checkout HEAD -- index.htm(wyewidencjonowanie z ostatniego zatwierdzonego stanu, zamiast wyrejestrowania z indeksu) działa?