Git说我正在添加' ^ M'但是core.autocrlf是真的

时间:2016-01-11 19:57:25

标签: git core.autocrlf

问题很简单。 Git说我已经将CR(^M)添加到文件中,

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

但我将core.autocrlf设置为true。

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

我之前没有遇到过这个问题,也不确定是什么引起了这个问题。我总是将core.autocrlf设置为true,并且从未抱怨过在此之前添加^M

以下是git config --list的输出,其中包含一些个人信息,gui设置和分支设置,以防万一。

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

1 个答案:

答案 0 :(得分:0)

至于它突然决定这样做的原因有2种可能性。

  1. repo的属性文件中有特定的内容已更改
  2. 那里有一些东西,有一个窗口样式行结束的行,因此决定默认为该样式。
  3. Windows的配置可能是一个婊子,而且比linux / mac更麻烦,但它并不是无法管理的。

    我只会告诉你我自己的配置(win 7 / mingwin),你应该能够很容易地搜索我所做的事情。我特意花了大约半天研究这个,因为我有点OCD,所以我可以确定行结尾总是在提交时转换为基于unix(LF)。

    C:\Program Files (x86)\Git\etc\gitconfig
    [core]
        autocrlf = false
    
    C:\Program Files (x86)\Git\etc\gitattributes
    
    * text=auto
    

    请注意,您应该查找如何配置默认git属性,如果需要,也可以在每个项目的基础上设置。我使用这些useful templates中的一个,但您自己的需求可能会有所不同。

    C:\Users\BAXTER\.gitconfig
    
    [core]
        eol = lf
    

    P.S。这可能是this

    的某种程度的重复