我有一个从Windows和OS X访问的Git存储库,我知道已经包含一些带有CRLF行结尾的文件.据我所知,有两种方法可以解决这个问题:
设置core.autocrlf到false无处不在,
按照指示在这里(回荡在GitHub上的帮助页)到存储库转换为只包含LF行结束,然后设置core.autocrlf要true在Windows和input在OS X上有这样做的问题是,如果我有仓库中任何二进制文件那:
他们会被腐化.我的存储库可能包含这些文件.
那么为什么我不应该关闭Git的行结束转换呢?网上有很多模糊的警告关于core.autocrlf关闭造成问题,但很少有具体问题; 到目前为止我唯一发现的是kdiff3无法处理CRLF结尾(对我来说不是问题),而且一些文本编辑器有行结束问题(对我来说也不是问题).
存储库是我公司的内部存储库,因此我不需要担心与具有不同autocrlf设置或行结束要求的人共享它.
是否有任何其他问题只是留下我不知道的行结尾?
我从其他人那里收到了git checkout,并尝试将未分级的更改提交到本地存储库.但是,即使内容完全相同,很多(如果不是每个)文件也会显示为已修改.
我已经设置core.fileMode为false并且设置core.autocrlf为false,但没有成功.
值得一提的是,我收到的Git repo来自使用Windows的人,而我使用的是Linux.
如何进行实际更改?
编辑:输出git config -l:
user.name=Aron Rotteveel
user.email=<removed>
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=auto
color.ui=true
color.pager=true
color.branch.current=yellow reverse
color.branch.local=yellow
color.branch.remote=green
color.diff.meta=yellow bold
color.diff.frag=magenta bold
color.diff.old=red bold
color.diff.new=green bold
color.status.added=yellow
color.status.changed=green
color.status.untracked=cyan
core.pager=less -FRSX
core.whitespace=fix,-indent-with-non-tab,trailing-space,cr-at-eol
alias.co=checkout
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
core.hidedotfiles=dotGitOnly
core.autocrlf=false
remote.origin.url=<removed>
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)
更新:添加了一些随机示例文件.这些文件只是纯文本,因此最容易包含.
原始文件位于:https://gist.github.com/c3c5302430935155ef3d.Hexdumps肯定表明文件不同,但我不知道是什么导致这个,以及如何解决它.
HEAD版本:
0000000: 4854 4d4c 2e53 6166 654f 626a 6563 740d HTML.SafeObject.
0000010: 0a54 5950 453a …Run Code Online (Sandbox Code Playgroud) 我已经看过所有类似的问题但是我已经仔细检查了一些奇怪的东西肯定会发生.
在一台服务器(Solaris with git 1.8.1)上,我克隆了git存储库,然后将.git文件夹复制到现有的实时文件中.这很完美,我可以跑
git status
Run Code Online (Sandbox Code Playgroud)
然后
git diff [filename]
Run Code Online (Sandbox Code Playgroud)
检查任何不同的文件.
在另一台服务器(Solaris with git 1.7.6)上,我做的完全一样
git diff [filename]
Run Code Online (Sandbox Code Playgroud)
即使文件的内容肯定不同,也不显示任何内容.我还测试了添加一个新文件,然后进行编辑.同样的问题,git status将文件显示为已更改但未git diff显示任何内容.如果我下载更改的文件并在本地运行diff,那么我得到diff输出.