将Windows PHP项目迁移到Git并应用OSX更新/补丁
我有一个基于Windows的PHP项目(CRLF Newlines),它没有任何版本控制。我最近在我的OSX机器上把这个项目放到Git中。另一个开发人员在源代码不在Git中时对其进行了更改(在单独的机器上),现在我必须将这些更改合并到repo中 我最初的计划是使用diff/patch来同步所有内容。问题是他在OSX上进行了更新,所以我必须转换换行符,以使diff/patch工作 有没有办法使diff与CRLF换行符一起工作?根据我所读到的,你必须在应用diff之前先转换到LF 如果不是,我是否必须递归地遍历所有文件并进行换行转换将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 如果不是,我是否必
我是否打算以适当的方式更新此回购协议?在创建修补程序时,您应该能够告诉您使用的工具忽略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 .