我想强制git在Windows下检出文件LF而不是CR+LF.我检查了两个配置选项,但我无法找到正确的设置组合.
我希望它将所有文件转换为LF并保留LF文件.
备注:我使用autocrlf = input但是这只是在你提交时修复文件.我想强制它让他们使用LF.
可能我不是那么清楚:存储库已经在使用LF但是使用msysgit检出的文件正在使用CR+LF,我想强制msysgit使用它们LF:强制Unix行结束.
>git config --list | grep crlf
core.autocrlf=input
Run Code Online (Sandbox Code Playgroud) 我有一个从Windows和OS X访问的Git存储库,我知道已经包含一些带有CRLF行结尾的文件.据我所知,有两种方法可以解决这个问题:
设置core.autocrlf到false无处不在,
按照指示在这里(回荡在GitHub上的帮助页)到存储库转换为只包含LF行结束,然后设置core.autocrlf要true在Windows和input在OS X上有这样做的问题是,如果我有仓库中任何二进制文件那:
他们会被腐化.我的存储库可能包含这些文件.
那么为什么我不应该关闭Git的行结束转换呢?网上有很多模糊的警告关于core.autocrlf关闭造成问题,但很少有具体问题; 到目前为止我唯一发现的是kdiff3无法处理CRLF结尾(对我来说不是问题),而且一些文本编辑器有行结束问题(对我来说也不是问题).
存储库是我公司的内部存储库,因此我不需要担心与具有不同autocrlf设置或行结束要求的人共享它.
是否有任何其他问题只是留下我不知道的行结尾?
我想删除对我的工作副本的所有更改.
运行git status显示修改的文件.
我没做什么似乎删除了这些修改.
例如:
rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: Rhino.Etl.Core/Enumerables/CachingEnumerable.cs
# modified: Rhino.Etl.Core/Pipelines/SingleThreadedPipelineExecuter.cs
# modified: Rhino.Etl.Tests/Rhino.Etl.Tests.csproj
# modified: Rhino.Etl.Tests/SingleThreadedPipelineExecuterTest.cs
#
no changes added to commit (use "git add" and/or "git commit -a")
rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git checkout -- Rhino.Etl.Core/Enumerables/CachingEnumerable.cs
rbellamy@PROMETHEUS …Run Code Online (Sandbox Code Playgroud) 我在Stack Overflow上阅读了很多不同的问题和答案,以及关于core.autocrlf设置如何工作的git文档.
这是我对以下内容的理解:
Unix和Mac OSX(OSX之前使用CR)客户端使用LF行结尾.
Windows客户端使用CRLF行结尾.
当在客户端上将core.autocrlf设置为true时,git存储库始终以LF行结束格式存储文件,并且客户端(即Windows)在签出/提交时来回转换客户端文件中的行结尾-LF行结尾,无论行结尾文件在客户端上的格式是什么(这与Tim Clem的定义不一致 - 请参阅下面的更新).
这是一个矩阵,试图为带有问号的core.autocrlf的'input'和'false'设置记录相同的内容,我不确定行结束转换行为.
我的问题是:
我将从答案中更新问号,因为似乎已形成共识.
core.autocrlf value
true input false
----------------------------------------------------------
commit | convert ? ?
new | to LF (convert to LF?) (no conversion?)
commit | convert to ? no
existing | LF (convert to LF?) conversion
checkout | convert to ? no
existing | CRLF (no conversion?) conversion
我并不是真的在寻找各种设置的利弊意见.我只是在寻找数据,这清楚地说明了如何期望git能够在三种设置中运行.
-
2012年4月17日更新:阅读了由JJD在评论中链接的Tim Clem的文章后,我修改了上表中"未知"值中的一些值,并更改了"checkout existing | true to conversion"到CRLF而不是转换为客户".以下是他给出的定义,这些定义比我在其他地方看到的更清楚:
core.autocrlf …
我在我的python程序中使用制表符缩进,但我想与使用空格的人合作(使用git).
有没有办法让git在推/取时自动在空格和制表符之间进行转换(例如,4个空格= 1个制表符)?(类似于CR/LF转换)
我计划将我的项目迁移到git,我现在想知道哪个是Windows下最好和/或最稳定的选项.
从我收集的内容我基本上有2.5个选项:
注意:IMO Cygwin本身就是一个很大的优势,因为你可以访问几乎所有的*nix命令行工具,就像使用MSYSgit bash一样,你只能访问这些工具的一小部分.
鉴于此,您会建议什么选择?
我的许多应用程序用户配置文件都保存在git存储库中,以便在多台计算机和多个平台之间轻松共享.这些配置文件.gitconfig中包含以下用于处理回车换行符的设置
[core]
autocrlf = true
safecrlf = false
Run Code Online (Sandbox Code Playgroud)
这些设置也应用于GNU/Linux平台,这会导致模糊的错误.
在配置文件中处理这些特定于平台的差异有哪些最佳实践?
我意识到这个问题可以通过为每个平台建立一个分支并将主要内容保持在主服务器并在主服务器向前移动时与平台分支合并来解决.我想知道这个问题是否有更简单的解决方案?
我正在我的Win Vista开发VPC上安装msysgit 1.6.4 beta.安装屏幕正在请求我是否要使用Unix行终止或DOS行终止.通常,我会选择DOS,但是设置文本表明DOS终止可能意味着文件不能与Git的所有命令行工具一起使用.Unix行终止状态"......大多数[Windows]应用程序可以处理这个......".
有谁知道我应该选择哪个选项通过shell为我的VS 2008工作使用Git?
我正在使用Visual Studio 2013 Update 4和git(在Visual Studio Online上托管).我在远程分支中有2个本地提交和2个提交.提交没有本地更改:

当我尝试在Visual Studio中执行Pull(或Fetch)时,我收到错误:
发生错误.详细消息:1冲突阻止结账

是的,有冲突,我应该合并.根据这个页面,我应该得到一个解决冲突的链接.但我在VS中没有看到.
我可以在VS之外进行合并,但这不是重点.同时,我的同事运行相同的设置可以进行合并而没有任何问题.我的VS出了什么问题?
ps我安装了msysgit可能会搞乱配置.根据这篇文章 我的全球.gitconfig看起来像:
[user]
mail = trailmax@stackoverflow.com
name = trailmax
email = trailmax@stackoverflow.com
[core]
excludesfile = C:\\Users\\trailmax\\Documents\\gitignore_global.txt
autocrlf = true
editor = \"C:/Program Files (x86)/GitExtensions/GitExtensions.exe\" fileeditor
[diff]
tool = vsdiffmerge
[difftool "vsdiffmerge"]
cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$LOCAL\" \"$REMOTE\" //t
keepbackup = false
trustexistcode = true
[merge]
tool = vsdiffmerge
[mergetool]
prompt = true
[mergetool "vsdiffmerge"] …Run Code Online (Sandbox Code Playgroud) 有没有办法确定现有git存储库中的行结尾?
如果我克隆现有存储库,如何确定创建者使用了哪个core.autocrlf?
我仍然不确定core.autocrlf的最佳设置,例如在Windows机器上(因为有多种意见: 使用代码分发git配置或https://help.github.com/articles/dealing-with-line-结局)
额外的问题:您是否可以在Windows上(使用标准工具)确定repo是否在所有提交中都有混合行结尾(错误的core.autocrlf设置)?
git ×10
msysgit ×3
cygwin ×1
dvcs ×1
git-config ×1
git-merge ×1
git-status ×1
indentation ×1
line-endings ×1
newline ×1
revert ×1
tabs ×1
working-copy ×1