V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sneezry
V2EX  ›  问与答

被 Git 的 line endings 搞蒙了

  •  
  •   sneezry · 2016-09-02 12:05:21 +08:00 · 1546 次点击
    这是一个创建于 2995 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 的方法。大家有什么好的建议吗?
    2 条回复    2016-09-07 10:15:09 +08:00
    Arnie97
        1
    Arnie97  
       2016-09-02 12:17:30 +08:00   ❤️ 1
    因为懒得折腾,所以我在各平台都用 LF ,反正 Windows 记事本以外的文本编辑器大都支持 LF 。
    另外,为了避免每个人的 config 不一致,可以使用.gitattributes 指定换行符类型。
    quericy
        2
    quericy  
       2016-09-07 10:15:09 +08:00
    git extension 会遵从设置,我记得用 IDE 也是能遵从 autocrlf 设置的

    或者也可以考虑设置 autocrlf=input,pull 各按各的,push 统一提交为 LF
    然后再配合 core.safecrlf 作为硬性限制
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1269 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:08 · PVG 02:08 · LAX 10:08 · JFK 13:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.