Jakie zmiany są git diff
widoczne 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.autocrlf
i git config core.safecrlf
. Istnieje dokumentacja dotycząca tych ustawień .
Powiedziałbym, że jeśli używasz git svn
do integracji z Subversion, upewnij się, że autocrlf
jest 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, checkout
aby cofnąć wszelkie zmiany.
Jeśli widzisz problem w miejscu, w którym to robisz git checkout
, a następnie git status
pokazuje, że plik jest nadal zmodyfikowany i git diff
pokazuje, ż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?