首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用git EOL转换

禁用git EOL转换
EN

Stack Overflow用户
提问于 2014-02-17 06:58:04
回答 5查看 107.1K关注 0票数 146

我试图使git不更改任何操作的任何行结束。不幸的是,这样做似乎并不重要。我已经将其简化为下面的测试用例,它有尽可能多的不同机制来禁用此行为。

  • 从两台机器开始(Windows计算机= A,Linux计算机= B)
  • 在这两台机器上:git config --global core.autocrlf false
  • 在这两台机器上:git config --global core.eol crlf (以防万一)
  • 在A上创建一个空文件夹的新存储库:
    • git init --shared (然后取消隐藏创建的.git目录)
    • 在存储库中创建一个新文件.gitignore
    • 使用单行:.gitattributes在存储库中创建一个新的文件* -text
    • git add .,然后git commit -m "initial commit"工作,例如
    • git branch master_recv
    • 添加遥控器

  • 在包含CRLF的存储库中创建一个新文件document.txt
  • 提交:git add -A,然后是git commit -m "<something>"
  • 请注意,A的document.txt仍然包含CRLF (删除它并用--hard重置它返回仍然使用CRLF的版本)
  • SCP整个目录到计算机B
  • 添加一个包含CRLF的新文件new file
  • 提交:git add -A,然后是git commit -m "<something>"
  • 请注意,B的document.txt和B的new file都仍然包含CRLF
  • 把B的主人拉到A:git pull <remote> master:master_recv
  • A的document.txt已改为LF。添加的文件new file也包含LF。

如果B是Windows机器,则不会发生此问题。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-02-20 21:09:19

我想通了。似乎SCP程序正在转换行尾。我注意到这一点,当我试图故意制作一个文件与LF结尾,然后观察到,它似乎作为CRLF下载时。

因为这是我的解决方案,我接受了这个答案,但是未来的人们也应该参考其他的答案来获得更普遍的解决方案。

票数 13
EN

Stack Overflow用户

发布于 2014-02-17 07:09:41

一个简单的解决办法是:

  • 确保所有repos的core.autocrlf设置为false: git config --global core.autocrlf false

如果有自动完成的转换,这意味着回购中存在一个.gitattributes 指令

使用Git 2.8+ (2016年3月)时,请检查是否仍然存在以下eol转换:

代码语言:javascript
复制
git ls-files --eol
票数 91
EN

Stack Overflow用户

发布于 2016-09-13 02:19:02

在您的项目中,应该有一个.gitattributes文件。大多数情况下,它应该如下(或此屏幕截图)所示:

代码语言:javascript
复制
# Handle line endings automatically for files detected as text 
# and leave all files detected as binary untouched.
* text=auto

# Never modify line endings of our bash scripts
*.sh -crlf

#
# The above will handle all files NOT found below
#
# These files are text and should be normalized (Convert crlf => lf)
*.css           text
*.html          text
*.java          text
*.js            text
*.json          text
*.properties    text
*.txt           text
*.xml           text

# These files are binary and should be left untouched
# (binary is macro for -text -diff)
*.class         binary
*.jar           binary
*.gif           binary
*.jpg           binary
*.png           binary

* text=auto更改为* text=false以禁用自动处理(请参阅屏幕截图)。

如下所示:

如果您的项目没有.gitattributes文件,那么行结束将由您的git配置来设置。若要更改git配置,请执行以下操作:

转到此目录中的配置文件:

  1. C:\ProgramData\Git\config
  2. 在Notepad++中打开配置文件(或任何您喜欢的文本编辑器)
  3. 将"autocrlf=“更改为false。

对于TortoiseGIT的用户:自动CrLf转换设置在图形用户界面上,在GIT部分。

票数 91
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21822650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档