Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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
将Windows PHP项目迁移到Git并应用OSX更新/补丁_Php_Git_Diff_Carriage Return - Fatal编程技术网

将Windows PHP项目迁移到Git并应用OSX更新/补丁

将Windows PHP项目迁移到Git并应用OSX更新/补丁,php,git,diff,carriage-return,Php,Git,Diff,Carriage Return,我有一个基于Windows的PHP项目(CRLF Newlines),它没有任何版本控制。我最近在我的OSX机器上把这个项目放到Git中。另一个开发人员在源代码不在Git中时对其进行了更改(在单独的机器上),现在我必须将这些更改合并到repo中 我最初的计划是使用diff/patch来同步所有内容。问题是他在OSX上进行了更新,所以我必须转换换行符,以使diff/patch工作 有没有办法使diff与CRLF换行符一起工作?根据我所读到的,你必须在应用diff之前先转换到LF 如果不是,我是否必

我有一个基于Windows的PHP项目(CRLF Newlines),它没有任何版本控制。我最近在我的OSX机器上把这个项目放到Git中。另一个开发人员在源代码不在Git中时对其进行了更改(在单独的机器上),现在我必须将这些更改合并到repo中

我最初的计划是使用diff/patch来同步所有内容。问题是他在OSX上进行了更新,所以我必须转换换行符,以使diff/patch工作

有没有办法使diff与CRLF换行符一起工作?根据我所读到的,你必须在应用diff之前先转换到LF

如果不是,我是否必须递归地遍历所有文件并进行换行转换


我是否打算以适当的方式更新此回购协议?

在创建修补程序时,您应该能够告诉您使用的工具忽略EOL更改或空白更改。另外,
git apply
git am
有一些关于如何处理空白的选项,但我没有使用它们,因此我不确定它们如何处理带有额外空白和EOL更改的差异

但真正的解决方案是将回购协议中的所有CRLF都更正为LFs,因为如果回购协议中的所有内容都使用LF行结尾,那么git的效果最好。如果需要,可以选择在签出时将行尾更改为CRLF,同时仍在内部使用LF。

Sweet

首先,我需要清除所有的CRLF。我用
rm-rf.git/
杀死了我的整个git回购。然后我松散地遵循了这个stackoverflow中的GitHub


然后,我对适当的文件夹运行了
diff
patch
,并运行了最后的
commit
。一切都同步了

谢谢你的反馈!你给我指明了正确的方向。
# switch on the conversion of line endings on commit
$ git config --global core.autocrlf input

# Initialize
$ git init
$ git add .
$ git commit -m "First Import"

# If you're doing this on a Unix/Mac OSX clone then optionally remove
# the working tree and re-check everything out with the correct line endings.
$ git ls-files -z | xargs -0 rm
$ git checkout .