在Windows上开发但在UNIX docker容器上运行时出现行尾问题



我的团队正在构建我们的第一个基于docker的.NET应用程序,并编写了一个bash脚本,作为构建过程的一部分(从dockerfile(运行。我们都在Windows 10机器上。

当bash脚本运行时,它会抛出一个错误:CCD_ 1。

根据我的研究,这似乎是因为行尾是Windows的行尾,而不是基于UNIX的。我能够通过使用Notepad++转换结尾来解决这个问题,并且脚本运行良好。然而,当我进入SourceTree查看更改后的文件时,它会短暂地显示为一个已更改的文件(并指出它无法检测到更改(。一旦我点击暂存文件按钮,它就消失了,好像没有任何更改的文件一样。

如何解决此问题?我可以在GIT中看到行尾设置,但不确定正确的设置应该是什么。

您可能正在查找.gitattributes文件。

它允许您设置要在哪些文件中使用哪一行结尾。

点击此处阅读更多:文档

使用dos2unix将帮助您解决此问题。dos2unix所做的是删除您遇到的隐藏窗口字符(^M(。

基于Windows的文本编辑器将特殊字符放在行的末尾表示换行或换行。通常无害,有些Linux服务器上的应用程序无法理解这些字符和可能导致服务无法正确响应。

如果您的linux机器中还没有dos2unix:

安装dos2unix

apt install dos2unix

在有问题的文件上运行dos2unix

dos2unix your_problematic_file.txt

在存储库的顶部添加一个.gitattributes文件,其中包含以下内容。

* text=auto
*.sh text eol=lf
*.conf text eol=lf

最新更新