用代码分发git配置

用代码分发git配置,git,Git,在尝试为开发人员标准化平台时,我的需求之一是提交.git/config,这样每个人都有相同的CRLF配置,而不会忘记手动设置 我该如何设置 我有点担心所有这些对autocrlf的负面影响。如果此功能不起作用,为什么不删除它?这项功能的制作者可能被误解,或者他们对其进行了失败的实验,应该将其删除,以阻止更多的人浪费时间(阅读晦涩难懂的手册页、提问、回答这些问题等).如果您使用的是Unix系列操作系统,我建议您只创建一个符号链接 ln -s .git/config git-config git ad

在尝试为开发人员标准化平台时,我的需求之一是提交
.git/config
,这样每个人都有相同的CRLF配置,而不会忘记手动设置

我该如何设置


我有点担心所有这些对
autocrlf
的负面影响。如果此功能不起作用,为什么不删除它?这项功能的制作者可能被误解,或者他们对其进行了失败的实验,应该将其删除,以阻止更多的人浪费时间(阅读晦涩难懂的手册页、提问、回答这些问题等).

如果您使用的是Unix系列操作系统,我建议您只创建一个符号链接

ln -s .git/config git-config
git add git-config
git commit -m "Now tracking git config file"

我总是发现
autocrlf
config属性有问题。 (如我在答覆中所说)

  • 它不仅使
  • 它可以变化
  • 它也有问题
注意:用于将其设置为true(这是msysgit安装程序设置的默认值),但我不相信

我更喜欢以下三种解决方案之一:

  • 配置线的一端样式
  • 使该配置通过不同的Git repo传播
第一个:
git config--global core.autocrlf false

然后:

一,。使用新的(1.7.2+)

为设置了text属性的文件设置要在工作目录中使用的行尾类型。
备选方案有“
lf
”、“
crlf
”和“
native
”,它们使用平台的本机行结尾。
默认值为本机值

二,。A. 请参阅手册页:
crlf
core.autocrlf
是在
.gittributes
文件中记录以前是本地配置属性的方法

您可以添加如下内容:

三,。a可以:

  • 强制执行您可能要设置的任何格式标准
  • 将这些标准应用于某些文件/目录
  • 被记录为配置文件(
    .gittributes
    ),可以推送到任何地方

    • 可能是更好的使用方法:

      在*nix或OS X系统中:

      ln .git/config git-config
      git add git-config
      git commit -m "Now tracking git config file"
      
      git clone FROM_PROJ_URL
      rm .git/config
      ln git-config .git\config
      
      在NTFS文件系统上的Windows中:

      mklink /H git-config .git\config
      git add git-config
      git commit -m "Now tracking git config file"
      
      git clone FROM_PROJ_URL
      del .git\config
      mklink /H .git\config git-config
      
      但我们必须记住,在克隆project时,应用设置以执行相反的过程:

      在*nix或OS X系统中:

      ln .git/config git-config
      git add git-config
      git commit -m "Now tracking git config file"
      
      git clone FROM_PROJ_URL
      rm .git/config
      ln git-config .git\config
      
      在NTFS文件系统上的Windows中:

      mklink /H git-config .git\config
      git add git-config
      git commit -m "Now tracking git config file"
      
      git clone FROM_PROJ_URL
      del .git\config
      mklink /H .git\config git-config
      

      ~/.gitconfig
      可以在本地覆盖
      ~/.gitconfig

      因此,作为构建、生成文件或配置脚本的一部分,您可以向用户的
      ~/.gitconfig
      中建议更改,或者通过
      git config
      加载本地脚本
      .gitconfig

      例如,使用一些设置创建新的
      .gitconfig
      ,并通过以下方式加载:

      git config --local include.path "/path/to/.gitconfig"
      
      或者要求用户在其
      ~/.gitconfig
      中包含以下行:

      [include]
          path = .gitconfig
      
      如果您使用Vagrant作为代码分发的一部分,您可以通过以下方式从
      Vagrant文件
      加载git配置:

      system('GIT_TRACE=1 git config --local include.path "$(git rev-parse --show-toplevel)/git/gitconfig"');
      
      然后在
      git/gitconfig
      中提交您的git配置,这样每次用户运行其VM的配置时,都会自动为主机上的git加载此文件(例如,强制禁用
      core.filemode
      ,这样Windows就不会有任何文件权限问题)


      要强制用户使用行尾,您应该使用
      .gittributes
      ,这应该是开箱即用的。使用类Unix行结尾(
      LF
      )的示例语法:


      这是个聪明的主意,我们混合了Windows/Mac/linux。但也许git可以使用windows链接,我会尝试用谷歌搜索它。它不起作用,在unix上,git即使使用链接也看不到配置文件的更改。如果你在unix上,它应该以另一种方式围绕mv.git/config git config工作;cd.git;ln-s../git config;光盘git添加git配置;git commit-m“正在跟踪git配置文件”;谢谢你的回答。我想我收到了一些关于autocrlf的信息。我在某个地方读到git只在\n模式下提交,这很好。我的一些开发人员正在使用windows,因为世界上的每个人都可以阅读crlf,所以我认为crlf对每个人来说都是最好的。但我们必须容纳那些似乎只喜欢cr的git。你怎么看?我在回顾属性的概念,之前我排除了它,因为我的理解是它是基于每个文件而不是整个存储库应用的。也许我弄错了。@narynaud:就我个人而言,我喜欢“
      \n
      ”,而且我喜欢不改变任何关于eol的事情。但是,如果您强制一种eol样式,
      .gittributes
      非常有趣,因为您可以将其应用于所有存储库,或者仅应用于repo中的特定部分。如果我在项目根目录下定义*+crlf,我想我会为我的png图片下地狱?我怎么能说“如果你认为它是文本,那么就做crlf,否则就做二进制”。我想避免自己做出艰难的决定,系统擅长猜测,调试错误将非常困难。@nraynaud:
      *.png-crlf
      放在
      *+crlf
      之后(在同一个
      .gittattributes
      文件中)应该注意这一点。这正是我想要避免的。因为我会忘记添加.gif文件,或者有一天一个同事会添加一个新的文件格式,但在提交时看不到他销毁了它(“它在我的计算机上工作了”,测试中看不到网站的可视销毁)。在我看来,这似乎是一个糟糕的解决方案。另请参阅:您可能有一个类似问题的答案要补充。谢谢,但我有点担心所有这些对autocrlf的负面影响,如果它不起作用,为什么不删除此功能?这项功能的制作者可能被误解,或者他们对其进行了失败的实验,应该将其删除,以阻止更多的人浪费时间(阅读晦涩难懂的手册页、提问、回答这些问题等)