当本地git repo执行时,GitHub不强制执行.gitattributes

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当本地git repo执行时,GitHub不强制执行.gitattributes相关的知识,希望对你有一定的参考价值。

我在我的git存储库的根目录中添加了一个.gitattributes文件。我为JSON文件指定了-diff并拆分了我创建的tar.gz文件。这是我的.gitattributes文件看起来像:

my_sub_directory/archive.tar.gz.part.* -diff linguist-generated=true
*.json -diff linguist-generated=true

使用.gitattributes文件,我的目标是告诉git将JSON文件和这些存档视为二进制文件,因此它不会跟踪它们的行数。我的本地git repo似乎成功地将其拾起并将文件视为二进制文件。但是,当我尝试将它合并到我的远程主GitHub存储库时,合并请求将存档视为文本文件并计算它们的行,这告诉我它忽略了包含的.gitattributes文件。

我认为可能是GitHub使用已经在主人身上的.gitattributes。因此,在尝试合并JSON文件和存档之前,我已经将.gitattributes文件单独提交。但GitHub仍然将文件视为带有差异的文本。

答案

你的.gitattributes文件中有一个额外的-diff。它应该只是linguist-generated=true

my_sub_directory/archive.tar.gz.part.* linguist-generated=true
*.json linguist-generated=true

Customizing how changed files appear on GitHub中的示例相同:

例如,要将search/index.json标记为生成的文件,请将此行添加到.gitattributes:

search/index.json linguist-generated=true

虽然这并没有真正告诉Github“将文件跟踪为二进制文件”,但它只是“默认情况下某些文件不会显示在差异中,或者计入存储库语言”。所以在pull请求中,默认情况下它不会显示diff:

enter image description here

以上是关于当本地git repo执行时,GitHub不强制执行.gitattributes的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio Git本地Repos和GitHub远程Repos互操作

在 Heroku 上清理 git repo

git命令大全

将本地已有仓库推送到github上新建的空仓库(git remote add ...)

ssh克隆不克隆git中的repo

autojump 之 git本地安装