在Windows上使用LF行结束符检出特定文件类型的Git命令

6
在Windows下,我希望使用LF行结尾检查所有的Linux shell文件(.sh)。其他基于文本的文件的行结尾应该转换为CRLF(这通过全局core.autocrlf=true处理)。
全局.gitconfig ``` [core] editor = 'C:/Tools/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin autocrlf = true ```
存储库根目录中的.gitattributes ``` *.sh text eol=lf ```
当添加.gitattributes文件时,我使用了"git add --renormalize ."命令。不幸的是,在检出后.sh文件仍然具有CRLF。
附加信息:我的一个团队成员几个提交之前更改了他的全局core.autocrlf=false,这导致了混乱的行结尾。
尝试的步骤: - 本地删除文件并重新检出: 没有影响 - 全部为CRLF. - 删除文件,推送删除操作,使用LF重新创建文件: 检出后仍然为CRLF。 - 使用Notepad++手动更改行结尾...

为了保险起见,可以尝试删除所有的 *.sh 文件,然后再次检出。 - sschuberth
没有访问实际存储库的权限,很难确定,但我怀疑您已经存在提交的 *.sh 文件副本,这些副本在文件的提交版本中具有 CRLF 行尾。 (通常情况下,使用 core.autocrlf = true,不会发生这种情况,但有各种方法可以使其发生,在此之后,文件将保持原样,直到您更改它们。)如果是这种情况,则要做的事情是手动修复文件一次,例如使用 dos2unix,添加并提交。 - torek
1
add-and-commit 命令将创建一个新的提交,其中文件具有 LF 行尾,并且从此时起,.gitattributes 条目将处理所有 提交的事务。但请注意:如果这个猜测是错误的,那么在使用 dos2unix 或等效工具和 git add 之后,Git 将会说没有需要提交的内容。 - torek
1个回答

8

没事了,我的 .gitattributes 文件名中有个错别字。

不过解决方法如下:

  • fix .gitattributes

    # normalize all introduced text files to LF line endings (recognized by git)
    *           text=auto
    # additionally declare text file types
    *.sh        text eol=lf
    *.c         text
    *.h         text
    *.txt       text
    *.yml       text
    
  • call git add --renormalize . to fix line endings of files with CRLF in repository


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接