相关疑难解决方法(0)

我为什么要在Git中使用core.autocrlf = true?

我有一个从Windows和OS X访问的Git存储库,我知道已经包含一些带有CRLF行结尾的文件.据我所知,有两种方法可以解决这个问题:

  1. 设置core.autocrlffalse无处不在,

  2. 按照指示在这里(回荡在GitHub上的帮助页)到存储库转换为只包含LF行结束,然后设置core.autocrlftrue在Windows和input在OS X上有这样做的问题是,如果我有仓库中任何二进制文件那:

    1. 在gitattributes中未正确标记为二进制文件,并且
    2. 碰巧包含CRLF和LF,

    他们会被腐化.我的存储库可能包含这些文件.

那么为什么我不应该关闭Git的行结束转换呢?网上有很多模糊的警告关于core.autocrlf关闭造成问题,但很少有具体问题; 到目前为止我唯一发现的是kdiff3无法处理CRLF结尾(对我来说不是问题),而且一些文本编辑器有行结束问题(对我来说也不是问题).

存储库是我公司的内部存储库,因此我不需要担心与具有不同autocrlf设置或行结束要求的人共享它.

是否有任何其他问题只是留下我不知道的行结尾?

git line-endings

272
推荐指数
3
解决办法
23万
查看次数

即使内容相同,Git状态也会将文件显示为已更改

我从其他人那里收到了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)

git

168
推荐指数
11
解决办法
13万
查看次数

git status显示已更改的文件,但git diff没有

我已经看过所有类似的问题但是我已经仔细检查了一些奇怪的东西肯定会发生.

在一台服务器(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输出.

git diff

152
推荐指数
11
解决办法
8万
查看次数

标签 统计

git ×3

diff ×1

line-endings ×1