被 Git 的 line endings 搞蒙了

2016-09-02 12:05:21 +08:00
 sneezry
Remote 的 repo 全是 LF ,在 Windows 下, git bash 的 config 改为了 core.autocrlf=false ,但 pull 回来的代码全是 CRLF 。

在 Windows Bash 中, git 的 config 同样是 core.autocrlf=false ,但 pull 回来的代码就是 LF 。

现在我们跑一个自动部署脚本,会把开发代码 copy 到产品的 repo 中,之前所有同事都是在 Windows 上同步开发代码以及跑部署脚本的,所以导致开发代码全是 LF ,产品代码全是 CRLF ,我用 Bash on Windows 跑部署脚本 commit 时出现更改了全部文件。

上面的问题基本可以确定是个 Windows 下 git bash 不 follow config 里的 core.autocrlf 导致的,所以解决办法有两个,一个是我完全抛弃 Bash on Windows ,也完全使用 git bash ,“利用”同一个 Bug 与大家保持一致;另一个就是让大家全切换到 Linux 环境,绕过这个 Bug 。

第一个解决方案容易实现,但这里埋了一个坑,以后的同事可能会时不时掉进去;第二个推起来比较繁琐,需要很多同事一起做。

当然最好的解决方案就是找解决 git bash 这个 Bug 的方法。大家有什么好的建议吗?
1566 次点击
所在节点    问与答
2 条回复
Arnie97
2016-09-02 12:17:30 +08:00
因为懒得折腾,所以我在各平台都用 LF ,反正 Windows 记事本以外的文本编辑器大都支持 LF 。
另外,为了避免每个人的 config 不一致,可以使用.gitattributes 指定换行符类型。
quericy
2016-09-07 10:15:09 +08:00
git extension 会遵从设置,我记得用 IDE 也是能遵从 autocrlf 设置的

或者也可以考虑设置 autocrlf=input,pull 各按各的,push 统一提交为 LF
然后再配合 core.safecrlf 作为硬性限制

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/303430

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX