【问题标题】:Git Cross-platform line endingsGit 跨平台行尾
【发布时间】:2016-11-20 22:10:57
【问题描述】:

我与许多人共享一个 git 存储库,我们目前发现很难获得所需的行结束功能。我们希望发生的事情:

  • 存储库中的所有文件都以 LF 行结尾存储
  • 当 Mac 用户拉/克隆/推送时,一切都保持不变
  • 当 Windows 用户拉取/克隆时,所有内容都将转换为 CRLF,但 .scr 文件除外
  • 当 Windows 用户推送时,所有内容都转换为 LF(参见第一个项目符号)

我尝试了几种不同的 .gitattributes 解决方案,我认为这可以做到,但我还没有找到正确的方法。

【问题讨论】:

    标签: git line-endings gitattributes


    【解决方案1】:

    这通常特定于您使用的编辑器。

    您可以使用一组标准化的规则,例如 EditorConfig 来指定常见的行尾。只要您任期内的每个人都使用原生支持它或安装了支持它的插件的 IDE,您就应该能够实现跨平台一致性。

    指定 LF 行结尾的剥离 .editorconfig 文件可能如下所示:

    # top-most EditorConfig file
    root = true
    
    [*]
    end_of_line = lf
    

    一些内置支持的编辑器,其他的插件是listed here

    【讨论】:

    • 我无法确保每个人都使用相同的 IDE。事实上,这有望很快成为一个公共项目,所以我希望能够做到这一点,以便任何用户都可以拉动项目,而无需自己进行行尾调整。
    • 这正是 EditorConfig 的重点——它是跨平台的,并且得到大多数常见 IDE 的支持。如果文件存在并且用户安装了插件,它将按照您告诉它的方式格式化您的行尾,而不管 IDE 的配置如何。如果用户在他们的 IDE 中没有 EditorConfig 支持,并且他们的行尾被配置为不是你想要的,你将无法为他们更改它
    • 啊,我现在明白了。感谢您的回答,我肯定会考虑这一点,但我希望仅通过 git 来完成此操作,而不是使用外部插件。有没有办法通过 .gitattributes 和 git global config 获得想要的行为?
    • 我以为你已经尝试过了,但它不起作用。您是否尝试过包含* text eol=lf.gitattributes 文件?
    猜你喜欢
    • 1970-01-01
    • 2011-07-11
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 2018-09-14
    相关资源
    最近更新 更多