我使用Windows系统将我的更改推送到git linux服务器,用户使用macOS提交,这可能是无效差异更改的问题吗?未更改的更改将显示为已删除,稍后会以新的方式重新添加。即时通讯使用sublime并尝试使用相同行为的netbeans ...
答案 0 :(得分:0)
基于Windows和* nix的操作系统在文件中使用不同的行结束字符。在您的情况下,您将在文件中添加Windows Carriage返回字符,在MacOSX上将其删除。
在您的Sublime上,您可以更改保存时的行结束字符以匹配MacOSX的行结尾。见is there a way to convert files line ending on saving。这样您就不会看到这些变化。
您还可以指示git使用core.autocrlf
配置自动执行转换。见GitHub dealing with line endings
答案 1 :(得分:0)
GitHub suggests你应该确保只使用\ n作为git-handling repos中的换行符。有一个自动转换选项:
$ git config --global core.autocrlf true
当然,据说将crlf转换为lf,而你想将cr转换为lf。我希望这仍然有用......
然后转换您的文件:
# Remove everything from the index
$ git rm --cached -r .
# Re-add all the deleted files to the index
# You should get lots of messages like: "warning: CRLF will be replaced by LF in <file>."
$ git diff --cached --name-only -z | xargs -0 git add
# Commit
$ git commit -m "Fix CRLF"
<强> core.autocrlf 强>
将此变量设置为“true”与设置文本几乎相同 所有文件的属性为“auto”,但文本文件不属于 保证规范化:存储库中包含CRLF的文件 不会被触及。如果要使用CRLF行,请使用此设置 即使存储库没有,也会在工作目录中结束 有标准化的行结尾。此变量可以设置为输入 在哪种情况下不执行输出转换。
答案 2 :(得分:0)
远程仓库混合了cr / lf lineendings,认为它是unix,现在我只是设置原来的lineending如果它再次发生。