标签: core.autocrlf

Git clones repository with CRLF even though I have core.autocrlf=false

When I clone a repository that uses LF line endings using msysgit on Windows, the checked out files have somehow the CRLF line endings even though my core.autocrlf is set to false. Why is that?

Example:

> git config core.autocrlf
false

> git clone https://github.com/wp-cli/wp-cli.git wp-cli
Run Code Online (Sandbox Code Playgroud)

The checked out files have CRLF line endings even though they have LF in the repository itself.

git core.autocrlf

7
推荐指数
1
解决办法
4726
查看次数

带有 autocrlf=true 的 Git 按原样检查带有混合行尾的文件

所以,我一直认为在将文件检出到工作目录时,core.autocrlf=trueGit 会替换所有LF结尾CRLF

Git 书

如果您使用的是 Windows 计算机,请将其设置为 true – 这会在您检出代码时将 LF 结尾转换为 CRLF

但是,当检出具有混合行尾并core.autocrlf设置为的文件时true,我的 Git 版本会按原样检出文件。

我找到了一个非常方便的 GitHub 存储库来测试这种行为 - https://github.com/YueLinHo/TestAutoCrlf

检测结果:

  • LF只有结尾的文件(LF.txt)
    • 使用autocrlf=false:按原样签出(所有行结尾都是LF
    • With autocrlf=trueCRLF结账时所有行尾都更改为

到目前为止一切顺利,一切都符合我的预期。现在对于混合行结尾的文件:

  • 具有混合行尾的文件(MIX-more_CRLF.txt、MIX-more_LF.txt)
    • 随着autocrlf=false:签出原样(的混合LFCRLF
    • 随着autocrlf=true:签出原样(的混合LFCRLF

为什么会发生这种情况?我没有看到任何关于autocrlf=true不接触带有混合行尾的文件的内容。

我的 Git 设置有问题吗?在全局 .gitconfig 中签出后,我检查了存储库文件夹中core.autocrlf运行的设置,命令返回 true。没有 .gitattributes 文件来覆盖设置。git config --get core.autocrlfautocrlf=true …

git newline line-endings msysgit core.autocrlf

7
推荐指数
1
解决办法
2209
查看次数

如何更改git status的行为,显示最终未提交的已修改文件?

我在一个仅限Windows的工作环境中工作,开发人员使用各种工具来编辑他们的文件.我们正在使用.gitatlassian堆栈来编写代码版本.我几乎都喜欢它.

我刚刚结束了一场漫长而艰苦的斗争,围绕着如何以及为什么git解释行结尾以及为什么core.autocrlf这样做.我们决定使用core.autocrlf true,一切都很好.

我很想知道如何改变这种行为git status:

  • 我有一个带CRLF行结尾的文件.
  • 我将行结尾更改为 LF

    $ git status
    On branch somebranch
    Changes not staged for commit:
        (use "git add <file>..." to update what will be committed)
        (use "git checkout -- <file>..." to discard changes in working directory)
    
    modified:   Src/the_file_i_changed_to_LF.js
    
    Run Code Online (Sandbox Code Playgroud)
  • 但是之后...

    $ git commit -a
    warning: LF will be replaced by CRLF in Src/the_file_i_changed_to_LF.js.
    The file will have its original line endings in your working directory.
    On branch …
    Run Code Online (Sandbox Code Playgroud)

windows git end-of-line core.autocrlf

7
推荐指数
1
解决办法
292
查看次数

根据用例正确设置git autocrlf

我正在搜索根据某些用例使用的正确设置,但找不到任何描述相同的来源.因此,我要求这个问题作为任何寻找git的autocrlf选项正确设置的人的解决方案.

使用案例1:我在Mac上,其他开发人员都在Windows上.他们在我加入之前管理源代码.

使用案例2:我在Windows上,其他开发人员都在Mac上.他们在我加入之前管理源代码.

用例3:我在Linux上,其他开发人员都在Windows上.他们在我加入之前管理源代码.

用例4:我在Windows上,其他开发人员都在Linux上.他们在我加入之前管理源代码.

使用案例5:我在Linux上,其他开发人员都在Mac上.他们在我加入之前管理源代码.

使用案例6:我在Mac上,其他开发人员都在Linux上.他们在我加入之前管理源代码.

我应该使用什么设置的git core.autocrlf?

编辑: 为什么这个问题不是许多类似问题的重复:

所有其他问题及其答案提供了所需的事实和知识,这使得读者需要做很多事情.这个问题旨在询问具体方案的具体答案.

git github core.autocrlf gitlab

7
推荐指数
1
解决办法
172
查看次数

通过.gitattributes强制执行core.autocrlf = input

有没有办法core.autocrlf=input从内部强制执行.gitattributes以便在整个同事中传播策略?

在细节我要的是转换为lf添加并保留as is结帐.

问题在于既没有texteol没有我想要的东西,.gitattributes因为它eol有3个可接受的值:

  1. lf
  2. crlf
  3. native

理想情况下,我希望我的.gitattributes文件看起来像这样:

* text eol=asis

git line-endings eol gitattributes core.autocrlf

7
推荐指数
2
解决办法
2546
查看次数

Android Studio - 基于Git的多平台项目的CRLF vs LF

我正在开发一个涉及多个开发人员的Android项目,其中一些开发人员在Windows上,另一些开发人员在Linux/MacOS上.由于我在Windows上,我已被指示配置Git如下以避免问题:

autocrlf = true
safecrlf = true
Run Code Online (Sandbox Code Playgroud)

这很好用.我在Android Studio中创建的任何.java/XML/etc文件都是CRLF,当我将它们推入repo时转换为LF,然后当我将更改提取到本地副本时返回CRLF.问题是,由于某种原因,某些类型的文件(如矢量可绘制资源)会在LF中生成.因此,当我尝试将它们添加到Git时,我得到了"不可逆转换"错误:

在此输入图像描述 我知道我可以设置safecrlf = warn,但据我所知,如果Git错误地将它们用于文本文件,则存在破坏二进制文件的风险,因此我正在寻找更安全的解决方案.现在我在将它们添加到Git之前手动将矢量资源编辑到CRLF中,这避免了上述错误消息,但是为每个文件重复该过程变得乏味.有什么方法可以强制Android Studio在CRLF中生成所有本地文件?

git android core.autocrlf android-studio

7
推荐指数
3
解决办法
3630
查看次数

GIT:如何在msysgit(windows)上摆脱烦人的CRLF消息?

实际上,每当我播放一个文本文件(大多数是em)时,我都会从git gui(我使用msysgit)获取消息,它用CRLF替换(或即将)行结尾.显然我想要它(并且有一个设置为huraah),但我不希望这些烦人的消息一直出现!

有什么办法保持设置,但关闭/禁用弹出消息?

我不知道如何在命令行上使用GIT,但我喜欢msysgit的暂存过程:)所以我宁愿不改为bash.

git newline git-gui core.autocrlf

6
推荐指数
2
解决办法
4883
查看次数

'git apply'失败,代码1:在SourceTree中尾随空白

我使用SourceTree以便在提交之前进行轻松的代码审查。在SourceTree中,我通常仅上演并提交我在文档中更改的部分行。

几天前,我从Windows上的程序员那里收到了一段代码,这在行尾造成了一些麻烦。如果我没有记错的话,那么我将其设置core.autocrlftrue,从而解决了Windows文件的问题。但是从那一刻起,我在另一个正在处理的仓库中遇到了重大问题。如果我只想在SourceTree中暂存文件的一部分,我现在会得到一个很大的错误说git apply' failed with code 1: [/a/long/path/here] trailing whitespace in SourceTree。因此,我认为我需要重新设置core.autocrlf它的含义,我“假设”它是(“所有人的母亲……等等”)false(我以前从没搞过core.autocrlf)。因此,我将其设置为false突然使所有仅更改一个字母的文件都标记为更改了文件中的所有行,这显然是在代码检查过程中的主要麻烦。

所以我搜索周围,我发现了一些例子解决方案,在这里左右,但所有应用添加额外的参数git add和做各种怪异的东西。我不认为我不能在SourceTree的GUI中插入自定义命令,这是我最想知道的事情。它怎么变得如此凌乱?最重要的是,我是否只能回到原来的状态(无论是什么状态),而不是每次要登台和提交时都必须发出额外的命令?

请注意; 我不怕命令行,我几乎整天都在工作。但是我只是喜欢在GUI(例如SourceTree)中进行代码审查。

任何有助于我恢复正常的提示都将极大地帮助我!

git line-endings core.autocrlf

6
推荐指数
3
解决办法
6218
查看次数

Mac 和 Windows 的 Git autocrlf 设置

我们的团队有人在 Mac 和 Windows 上工作。到目前为止,我们已将 git 自动行结束设置为true(在 OSX 上)和input(在 Windows 上)。它工作得很好,除非存在合并冲突。在这种情况下,SourceTree 和 GitKraken 都会搞乱 Windows 上的合并,因为它们将所有以 LF 结尾的行视为一行。

我们所有人都应该使用相同的值core.autocrlf(在这种情况下是哪个?)还是针对特定应用程序有一些修复?

注意:目前,当行尾混乱时,我们会进行手动合并,但这很痛苦。另外,设置core.autocrlffalse也不是一个选项,因为配置文件中的错误行结尾会导致 Linux 上的构建崩溃。

windows git macos core.autocrlf

6
推荐指数
1
解决办法
5070
查看次数

为什么 Git 想要将我的行结尾更正为 CRLF,即使我希望它们是 LF?

在一个相对较大的项目中,使用签出CRLF和提交LF的策略。为此,我的系统使用:

git config --global core.autocrlf true
Run Code Online (Sandbox Code Playgroud)

但是,当提交文件(在本例中为.gitattributes文件)时,会返回警告:

LF would be replaced by CRLF in .gitattributes
Run Code Online (Sandbox Code Playgroud)

文件.gitattributes本身包含该行* text=auto !eol,并且文件本身使用 LF 行结尾。

为什么会发生这种情况?为什么 Git 告诉我要小心,因为它会将 LF 转换为 CRLF,即使我希望此文件在存储库中以 LF 结尾进行规范化?

我一定错过了一些完全明显的东西,因为我已经经历过:

还有更多,但这仍然没有像我想象的那样工作。

git line-endings core.autocrlf

6
推荐指数
1
解决办法
5104
查看次数