/ / Git mówi, że dodałem '^ M', ale core.autocrlf jest prawdziwe - git, core.autocrlf

Git mówi, że dodaję "^ M", ale core.autocrlf jest prawdziwe - git, core.autocrlf

Problem jest dość prosty. Git mówi, że dodałem CR (^M) do pliku,

me@myComp MINGW64 /c/workspace/service (develop)
$ git diff --check
engine/src/main/java/someFile.java:18: trailing whitespace.
+import some.java.package;^M

ale mam core.autocrlf ustawione na true.

me@myComp MINGW64 /c/workspace/service (develop)
$ git config --get core.autocrlf
true

Nie natknąłem się wcześniej na ten problem i nie byłem pewien, co go powoduje. Zawsze miałem core.autocrlf ustawiona na true i nigdy nie narzeka na dodawanie ^M przedtem.


Oto wynik git config --list z niektórymi informacjami osobistymi, ustawieniami gui i usuniętymi ustawieniami oddziałów na wypadek, gdyby były potrzebne.

core.symlinks=false
core.autocrlf=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
push.default=simple
core.autocrlf=true
core.pager=less -x4
core.trustctime=false
core.editor=vim
core.filemode=false
alias.hist=log --pretty=format:"%ad %C(yellow)%h%C(reset) %s %C(yellow)%an%C(reset)" --date=short
alias.logo=log --oneline
alias.superlog=log --decorate --graph
alias.superlogo=log --decorate --graph --oneline
alias.dry-merge=merge --no-commit --no-ff
gui.recentrepo=C:/sts-workspace/kba-service
merge.tool=vimdiff
merge.conflictstyle=diff3
mergetool.prompt=true
mergetool.keeptemporaries=false
mergetool.keepbackups=false
mergetool.trustexitcode=false
diff.tool=vimdiff
difftool.prompt=true
color.ui=true
credential.helper=cache --timeout=3600
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
core.hidedotfiles=dotGitOnly
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
core.hidedotfiles=dotGitOnly

Odpowiedzi:

0 dla odpowiedzi № 1

Jeśli chodzi o powód, dla którego nagle postanowiliśmy to zrobić, istnieją 2 możliwości.

  1. Albo jest coś konkretnego w pliku atrybutów repo, który się zmienił
  2. Jest tam coś z linią, która kończy linię stylu okna, więc zdecydowano się na domyślny styl.

Config dla okien może być dziwny i jest o wiele bardziej kłopotliwy niż linux / mac, ale nie jest nie do opanowania.

Pokażę ci tylko własną konfigurację (wygraj 7 /mingwin) i powinieneś być w stanie przeszukiwać to, co zrobiłem dość łatwo. Specjalnie spędziłem około pół dnia, badając to początkowo, ponieważ im rodzaju OCD, więc mogłem być pewien, że zakończenia linii były zawsze konwertowane na unixowe popełnić.

C:Program Files (x86)Gitetcgitconfig
[core]
autocrlf = false

C:Program Files (x86)Gitetcgitattributes

* text=auto

Zauważ, że prawdopodobnie powinieneś sprawdzić, jak skonfigurować domyślne atrybuty git, które mogą być również ustawione dla każdego projektu, jeśli zajdzie taka potrzeba. Korzystam z jednej z nich przydatne szablony ale twoje potrzeby mogą się różnić.


C:UsersBAXTER.gitconfig

[core]
eol = lf

P.S. Jest to prawdopodobnie powielanie w pewnym stopniu to