gpt4 book ai didi

linux - git - Windows + linux 双启动中的 CRLF 问题

转载 作者:可可西里 更新时间:2023-11-01 10:42:25 25 4
gpt4 key购买 nike

我将通过解决问题的方法来回答我的问题。

反对者注意事项:我知道根本原因已在其他各种讨论帖中讨论过(这就是我解决问题的方式)。这篇文章更多的是关于双引导系统如何导致你遇到这个问题。所以不,这个问题/答案不是重复的,而是一般问题类别的一个特定实例,在这个问题上向 SO 的存储库添加更多案例。


在家:我在 Linux 中编写代码。 LF 用作行尾
在办公室:我在 Windows 中编写代码。 CRLF 用作行尾。
默认情况下,git 的 autocrlf 特性 ( https://stackoverflow.com/a/20653073/2715083 ) 让事情变得愉快。

但是,如果您运行 Linux 和 Windows 的双引导系统,您可能会以下列方式搞砸自己:

  1. git pull 您在 Windows 环境中的 linux 环境中处理的一些文件,位于可以从双引导 linux 环境访问的位置。这会修改文件以包含 CRLF 结尾。
  2. 然后当你在 linux 中打开文件时,默认只有 LFgit diff 会说 entire file is modified,因为每个 LF 在每一行都被更改为 CRLF 。 (我被 Atom 警告过,它内置了这个差异计数)

最佳答案

you are talking about text=auto part? I wasn't sure If I need to include that in a new .gitattributes file or not, because when I did, ATOM still showed the files as modified.

是的,确实如此。
要强制 Git 应用 .gitattributes 指令,请参阅“Dealing with line endings”。

我首先要确保 core.autocrlf 设置为 false。

git config --global core.autocrlf false

然后:

git add . -u
git commit -m "Saving files before refreshing line endings"

rm .git/index

git reset

git status

git add -u
git add .gitattributes

git commit -m "Normalize all the line endings"

您还可以使用,强制索引重新规范化:

git rm --cached -r .
git reset --hard

参见“Force LF eol in git repo and working copy

* text=auto eol=lf

关于linux - git - Windows + linux 双启动中的 CRLF 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45598577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com