38

我想将属性文件添加到我的 Git 存储库中,如此所述。它表明我应该包含.gitattributes在我的存储库的根文件夹中。

  • 只是.gitattributes一个文件还是一个文件夹?如何创建此文件/文件夹?

    Windows 引发以下错误:

    “无法创建没有文件名的文件”

    “您必须输入文件名”

  • 应该在哪里添加文件?在存储库根目录下X:\PATH\TO\Repository\,或 Git 文件夹下,X:\PATH\TO\Repository\.git\

  • 是否会为其他贡献者克隆/分叉我的存储库强制执行这些属性?

    例如,如果我推送到 GitHub 或 GitLab 并且其他方拉下一个副本,我添加的属性是否也会在他们的机器上强制执行?

相关: Git 忽略

注意:如果有帮助,我会在 Windows 平台上使用TortoiseGit和 msysgit。

4

1 回答 1

56

.gitattributes文件还是文件夹?我如何创建它?

  • Windows:在 Windows 资源管理器中创建一个新的文本文件(右键单击>新建>文本文件)并将其重命名(快捷方式:)F2如下

    .gitattributes.
    

    注意:即 ++ DOTwindows将删除尾随为您生成适当的文件名gitattributesDOTDOT

  • Unix:及其变体(Ubuntu、Raspberrian、Mac OS 等)

    touch .gitattributes
    
  • 或者:克隆Git Attributes存储库并移动/复制.gitattributes适用于您的存储库的文件(脚注 1 和 2)。

应该在哪里添加文件?在存储库根目录下X:\PATH\TO\Repository\,或 Git 文件夹下,X:\PATH\TO\Repository\.git\

有两个位置可以添加 Git 属性文件

    \Repository                        (1)
    \Repository\.git\info\attributes   (3)
  1. 在此处添加.gitattributes文件会设置“通用”属性。
  2. 在此处创建.gitattributes文件会设置“个人”属性,即自己机器上的存储库。虽然不可取,但您可能有充分的理由这样做。

是否会为其他贡献者克隆/分叉我的存储库强制执行这些属性?

如果文件被提交到存储库,它将在存储库被克隆时被克隆,并且相应地在一个项目的贡献者的机器上强制执行属性(脚注:3 和 4)。属性在.gitattributes添加到项目根目录时“全局”应用X:\PATH\TO\Repository\.gitignore,而在添加到某个子文件夹时“本地”应用X:\PATH\TO\Repository\SOME\SUB-FOLDER\.gitignore


脚注:

  1. 如果您使用大文件存储 (Git LFS),则必须小心,因为这些文件可能不支持 LFS,反之亦然。.gitattributes此外,当您设置跟踪时,LFS 将为您创建。
  2. 巧合的是,还有Git Ignore的存储库。
  3. 最初,当我第一次问这个问题时,我很关心行尾的正确处理;.gitattributes处理得很好,但每个贡献者最好在他们自己的机器上正确配置 git。
  4. 不要成为添加.gitattributes.gitignore文件中的白痴。是的,这将应用“个人”属性,但是有一天有人会“全球”覆盖您的解决方法,并且会有眼泪和拥抱......很多拥抱!
于 2013-08-20T10:05:56.813 回答