Zmiana jednego znaku w pliku prowadzi do MSysGit, myśląc, że cały plik się zmienił
Mam repozytorium git zawierające kod C # i pracujęMSysGit
w systemie Windows.
core.autocrlf
jest włączony i używam.gitattributes
zto pytanie, i „renormalizowałem” moje repo, jak wspomniano na doleten przewodnik Github.
Teraz dlatrochę z.cs pliki w moim repozytorium, jeśli zmienię nawet jedną postać,MSysGit
uważa, że cały plik się zmienił.
Sklonowałem składowisko świeże. Próbowałem najpierw edytować plik w Visual Studio, ale potem próbowałem go otworzyćSciTE który pokazuje mi kończące linię i znaki tabulacji, a także ufam, że nie zrobi nic dziwnego w pliku (jak zmiana kodowania).
Sklonowałem więc repozytorium:
$ git clone git clone [email protected]:my-repo.v2.git
$ cd my-repo/
Sprawdzam repozytorium i plik:
$ git status
# On branch master
nothing to commit (working directory clean)
$ git diff path/to/myfile.cs
$
Otwieram plik w SciTE (zauważ, że końcówki linii sąCRLF
i nie ma zakładek):
using System;
using System.Collections.Generic;
...
i zmień jedną postać (i zauważ toCRLF
i żadne karty nie są jeszcze prawdziwe):
using System;
!using System.Collections.Generic;
...
a teraz git myśli, że wszystko się zmieniło:
$ git diff path/to/myfile.cs
diff --git a/path/to/myfile.cs b/Dpath/to/myfile.cs
--- a/path/to/myfile.cs
+++ b/path/to/myfile.cs
@@ -1,116 +1,116 @@
-<U+FEFF>using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Microsoft.Practices.EnterpriseLibrary.Data;
-using DataModel.Models;
-using DataModel.Mappers.Interfaces;
-using System.Data.Common;
-using System.Data;
...
Normalny program różnicujący nie uważa, że te dwa pliki są tak różne igit diff
w Uniksie nie są zbyt różni, alemsysgit
robi.
Czy ktoś kiedykolwiek spotkał się z tym wcześniej lub miał jakieś pomysły?