2015-01-07 79 views
8

如何将具有crlf行的单个文件转换为具有lf行返回值?如何在单个文件中用lf替换crlf

当我将它们推送到远程存储库时,git已经正确地处理了crlf以自动转换为文件,但在这种特殊情况下,我没有对存储库进行推送。相反,我使用HTML表单上的文件字段将文件上传到要求文件具有行返回的网站。所以我需要能够单独转换这个文件。

我在这台计算机上可用的潜在有用的工具是git和Dreamweaver CC 2014.1。 (我猜Word,写字板和记事本不是可行的选择,但我打开纠正。)

我在Windows 7上,并使用git行命令。

回答

9

上窗口的GIT中安装通常包括dos2unix工具。

dos2unix <file> 

但在你的情况,你应该使用.gitattributes,以防止文件被转换的窗口。

一个.gitattributes文件可以是这样的

*.vcproj eol=crlf 
*.sh  eol=lf 

.gitattributes documentation

设置为字符串值 “LF”

此设置强制Git的标准化行结束LF在签入时,并防止在签出文件时将其转换为CRLF 。

只要提交.gitattributes文件,您的文件将在每个系统上以LF行结尾结算。

+1

如果您没有dos2unix,请使用'echo'$(perl -pe's/\ r \ n?//'filename> filename')。 –

+0

@RenéLink,谢谢.gitattributes是一个永久的解决方案。 –

1

Word和wordpad是为了避免! 从不尝试修改一些代码,他们会为该文件添加额外的代码。

要转换行结束,您只需使用Notepad++Scite,然后选择文件结尾:Windows,Mac,Linux。

下面是使用赛特一个例子:

scite

2

从Windows风格的文本转换为Unix风格的文本:

perl -pe 's/\r$//g' <windows_file.txt> unix_file.txt 

从UNIX风格的文本转换为Windows风格的文本:

perl -pe 's/(?<!\r)\n/\r\n/g' <unix_file.txt> windows_file.txt 

这种“Unix的TO- Windows“命令是”安全的“,我的意思是它不会将额外的Carriage-Return添加到已经是Windows格式的文件中。我希望有人能从中获得一些用处。