Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP换行符被GIT弄乱了_Php_Git_Newline - Fatal编程技术网

PHP换行符被GIT弄乱了

PHP换行符被GIT弄乱了,php,git,newline,Php,Git,Newline,我们的网站有一个部分,经常改变,以配合用户。(示例大大简化) 用于更新内容的方法[我现在无法更改]是php在html网页中搜索默认内容,并在将其提供给用户之前将其替换为新内容 $stats = "user:Mike last visit:Yesterday"; $defaults = "user:Guest last visit:None"; $code = implode($stats, explode($defaults, $code)); 一切都很好,直到我们开始用GIT(惩罚贪吃的人,

我们的网站有一个部分,经常改变,以配合用户。(示例大大简化)

用于更新内容的方法[我现在无法更改]是php在html网页中搜索默认内容,并在将其提供给用户之前将其替换为新内容

$stats = "user:Mike
last visit:Yesterday";
$defaults = "user:Guest
last visit:None";
$code = implode($stats, explode($defaults, $code));
一切都很好,直到我们开始用GIT(惩罚贪吃的人,我们是)备份网站

GIT似乎改变了html页面中的换行符,因此php无法再找到原始文本

我不知道新行是如何存储或更改的,但在提交过程中偶尔会从GIT收到一个错误,说它必须更改新行,并提供“解锁”或“继续”

然后网站就不工作了,直到我将默认文本从外部存储的副本复制/粘贴到该页面,并且不进行提交

我知道我可以使用regex进行搜索/替换,但页面上的用法足以避免不必要的表达式


我的本地计算机运行Windows。服务器运行Unix。

似乎正在将Windows换行符(
\r\n
,或
0x0D0A
)转换为Unix换行符(
\n
,或0x0A)。如果HTML包含Windows行结束,则在字符串中间搜索UNIX风格的行不会起作用。您可以这样明确地说明您想要哪一个:

$stats = "user:Mike\r\nlast visit:Yesterday";
或:


似乎正在将Windows新行(
\r\n
0x0D0A
)转换为Unix新行(
\n
或0x0A)。如果HTML包含Windows行结束,则在字符串中间搜索UNIX风格的行不会起作用。您可以这样明确地说明您想要哪一个:

$stats = "user:Mike\r\nlast visit:Yesterday";
或:

crlf

此属性控制 行结束约定

在上设置crlf属性 路径用于将路径标记为 “文本”文件。core.autocrlf转换 在没有猜到答案的情况下发生 检查内容类型

取消设置取消设置上的crlf属性 一条路径告诉git不要尝试任何操作 签入时的行尾转换或 结帐

告诉git不要转换crlf,方法是将问题文件的
crlf
指定为
Unset
,问题应该消失。

crlf

此属性控制 行结束约定

在上设置crlf属性 路径用于将路径标记为 “文本”文件。core.autocrlf转换 在没有猜到答案的情况下发生 检查内容类型

取消设置取消设置上的crlf属性 一条路径告诉git不要尝试任何操作 签入时的行尾转换或 结帐


通过为相关文件指定
crlf
Unset
,告诉git不要转换crlf,问题应该消失。

检查您是否没有将
core.autocrlf
设置为“输入”(例如,使用“
git config--get core.autocrlf
”)


此配置变量使Git能够将MS Windows的行尾约定“\r\n”(CRLF)转换为UNIX约定“\n”(LF)。详见手册页;
crlf
git属性将有更精细的选择。

检查
core.autocrlf
是否设置为“输入”(例如,使用“
git config--get core.autocrlf
”)


此配置变量使Git能够将MS Windows的行尾约定“\r\n”(CRLF)转换为UNIX约定“\n”(LF)。详见手册页;
crlf
git属性将有更精细的选择。

在安装过程中,mygit提供保留换行符的选项


这解决了我升级后的问题。

在安装过程中,myGit提供了保留换行符的选项


这解决了我升级后的问题。

实际内容非常长且复杂,我无法用\r\n替换[人类设计师需要的]空间。如果有一种方法可以在编辑器中显示新行的同时\r\n显示新行,那就好了-可以这样做吗?作为记录,在切换到GIT之前,即使我的机器是Windows机器,也没有问题。当GIT抛出换行符错误时,“继续”和“解锁”选项之间有区别吗?我不是GIT用户,所以我不能说。但Dav似乎有解决方案。实际内容非常长且复杂,我无法将[人类设计师需要的]空间替换为\r\n。如果有一种方法可以在编辑器中显示新行的同时\r\n显示新行,那就好了-可以这样做吗?作为记录,在切换到GIT之前,即使我的机器是Windows机器,也没有问题。当GIT抛出换行符错误时,“继续”和“解锁”选项之间有区别吗?我不是GIT用户,所以我不能说。Dav似乎有解决方案。请帮助我了解如何做到这一点?应该可以让您对gitattributes文件的工作方式有一个稍微友好一些的概述。但具体来说,您要做的是进入目录,将不应进行CRLF转换的文件放入目录中,并在其中创建一个名为
.gittributes
的文件,其中的内容是
*.html-CRLF
。这将阻止git为该目录中的任何.html文件转换CRLFs。请帮助我了解如何执行此操作?应该可以让您对gitattributes文件的工作方式有一个稍微友好一些的概述。但具体来说,您要做的是进入目录,将不应进行CRLF转换的文件放入目录中,并在其中创建一个名为
.gittributes
的文件,其中的内容是
*.html-CRLF
。这将阻止git为该目录中的任何.html文件转换CRLFs。
$stats = "user:Mike\nlast visit:Yesterday";