问题标签 [gitattributes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
527 浏览

git - 如何告诉 git-svn 文件不是二进制文件

我正在使用 git-svn 将大型 SVN 存储库(约 28k 提交)转换为 Git。当这个过程完成时(~ 1 1/2 周),我遇到了一些 .ps1 文件在差异中被视为二进制文件。我已经在 master 上提交了一个 .gitignore 文件(当然是在转换之后),它告诉 git 将文件视为文本:

注意:-text 只是告诉它按原样处理行尾(不将它们与 Unix 行尾一起存储在其数据库中)

但是,当然,我只能在转换后添加 .gitattributes 。

.gitattributes 在 Git-extensions 中对于以前的提交/差异并不完全有效,但这可能是我现在不想讨论的另一个问题。主要问题是存储在 git 中的二进制文件。

我在某处读到您可以在 .git/INFO 下存储 gitattributes。我可以在转换过程之前执行此操作,但我没有再尝试过,因为转换需要一个多星期的时间,我希望在第一次罢工时就做好。

所以基本上我的问题现在如下:考虑到转换后的存储库:我可以将现有 git 存储库中的现有二进制文件转换为文本文件吗?

如果不是:我如何告诉 git-svn 在整个转换过程中使用 gitattributes 哪些文件将被视为文本/二进制文件?

编辑:问题不在于转换中的任何内容(git 故意将文件视为二进制文件),而是文件被“git diff”或 Git 扩展视为二进制文件。(见答案)当使用差异工具(例如 BeyondCompare)时,您仍然可以使用这些文件。在历史上只是有点烦人。由于文件按原样迁移,因此转换工作完美无缺。(即UTF-16)

0 投票
2 回答
5262 浏览

windows - 在 Windows 中覆盖 .gitattributes text=auto

这是非常不直观的:

根据各种媒体的说法,core.autocrlf=false根本不应该有换行转换。

在项目根目录中,我发现.gitattributes以下行:

如果我评论它,警告就会消失。问题 - 我怎样才能.gitattibutes自动覆盖这个设置?

0 投票
0 回答
274 浏览

git - gitattributes 过滤器可以删除或添加文件吗?

Git 属性可用于为每个文件设置过滤器,以使工作目录的内容成为存储库内容的转换版本。我想知道这是否可以用来清理Archlinux 的新 AUR 版本 4.SRCINFO中必须处理的文件。

本质上,有两个文件被调用PKGBUILD,并且.SRCINFO都必须存储在存储库中。对于我的情况,可以安全地假设它.SRCINFO是通过运行mksrcinfoPKGBUILD. 我希望两者都显示在存储库中,但只显示PKGBUILD在我的本地树中。

如何设置过滤器对,以便

  • smudge去除.SRCINFO,或者甚至更好地不创建它开始和

  • 干净的添加.SRCINFO,通过运行生成mksrcinfo PKGBUILD

0 投票
2 回答
705 浏览

git - 如何通过父项目中的 .gitattributes 将子模块中的行结尾强制为 LF?

我有一个存储库来存储我所有的 Vim 设置。它使用子模块来引入带有 Pathogen 的插件(我看过其他插件管理器,目前不感兴趣)。

由于 MSYSGit 在打开 Vim 以获取提交消息时处理行尾的方式,我需要将存储库与 Unix 行尾 (eol=lf) 一起存储。

我尝试在主仓库中添加一个 .gitattributes 文件,其中包含以下内容:

git rm --cached -r .使用and刷新主存储库后,主存储库中git reset --hard的行结尾现在是 LF。但是,在子模块内运行相同的命令不起作用。

如何配置我的 git repo 以便使用 LF 行结尾签出子模块?

0 投票
1 回答
126 浏览

linux - Git/Veracrypt EOL 地狱 - 无法丢弃修改过的文件

veracrypt 是否在内存中进行任何类型的文件缓存,这可能会阻止对我的 git 配置文件的更改被识别?

长版:我在与 Windows 共享的 veracrypt 分区上有一个 repo。在我的仓库中尝试强制执行 EOL 时,我看到文件或多或少任意设置 EOL。当对我的 .gitattributes 文件进行微不足道的更改时,我会将此更改合并到一个分支上,突然我的新分支中充满了仅 EOL 更改的文件。

我主要使用 SmartGit 或 cmd-line (git v 1.8.3.1) 在 linux 上工作。我已经尝试在我的全局和 repo 配置文件中删除 autocrlf 和 safecrlf 或设置为 false,以防它们混淆。我试过删除我的 .gitattributes 文件,或设置

为了防止任何转换。

我已经重置了几十次,并删除了我的本地仓库并重新克隆。但我无法摆脱这些修改过的文件

下面是我的 .gitattributes

我的主要问题是一些(不是全部).so 符号链接在一个特定的分支中显示为已修改 - 寻找整个世界,就像它们已被转换一样。这一直发生在我最新的分支中,但不是早期的分支。在当前一连串的疯狂中,我的最后一次合并添加了 *.cpp 标记,它立即将我的一些(不是全部)*.py 文件转换为 Windows 行结尾。

有没有人经历过这种不可靠的情况?这个版本的 git 是否支持 .gitattributes 文件?veracrypt 或 NTFS 分区是否让我感到困惑?

一个星期以来,我一直在研究应该是一项微不足道的任务,并且根本无法理解 git 是如何决定其 EOL 策略的。

0 投票
1 回答
1316 浏览

gitattributes - SubGit 和 .git 属性

我正在将一个 SVN 存储库导入到 Git 中,并且我有很多带有svn:eol-style设置的文件。SubGit读取这些属性并为每个文件生成.gitattributes一行。

有没有办法告诉它对每种类型的文件使用单行(即*.java text,或者*.java text eol=lf因为我们有一个风格指南规则要求这样做)?

我试图info/attributes在导入之前将 . 添加到存储库,但生成的.gitattributes.

有没有办法做到这一点?

0 投票
1 回答
1071 浏览

windows - 使用干净的过滤器和 sed 更新 git add 上的文件

我的一些项目文件的顶部有一个小标题,我想确保每次对它们进行更改时都会更新到当前年份。我在 git 中的干净过滤器出现问题并抛出错误:

testClass.cs首先,我的主分支上有一个文件:

然后我对文件做一个小改动:

然后我运行git add testClass.cs为下一次提交暂存更改。这将运行我的 git clean 过滤器,该过滤器用于sed尝试就地编辑文件以将标题中的年份更新为 2015(即,2011-2014 应更改为 2011-2015)。这是配置,带有过滤器设置:

我遇到的问题是添加/更新由于“设备或资源忙”错误而失败。似乎与 sed 创建的临时文件有关。如果我在命令行上测试 sed 命令可以正常工作,但在用作过滤器时会失败。

我正在使用 git bash 版本 2.5.3 (MINGW64)。

0 投票
1 回答
587 浏览

git - 使用 .gitattributes 使 git 存储带有 CRLF 行结尾的文本文件

我希望 git 在内部存储具有 CLRF 行结尾样式的文本文件,我不只是想在工作目录中看到这样的行结尾(但 WD 还应该包含 CRLF 文件)。可以实现此目的的 .gitattributes 配置是什么?

我需要这个,以便存储库可以与内部也使用 CRLF 的 Mercurial 无缝同步(由于原始文件是这样的)。

在检查了我在网上找到的所有可能配置之后,包括这里,我找不到会产生 CRLF 的解决方案。最后,这些文件最终被存储为 LF。我尝试了以下 .gitattributes 文件:

还尝试了 text=auto, text=crlf ,即使没有第一行,也没有运气。我还在更改此设置之间重新克隆了存储库。

谢谢你。

编辑:在我发布这篇文章 5 秒后,我发现另一个似乎正在工作的片段:

但是我不确定这到底是做什么的。有人可以确认这是我想要的,以后不会咬我吗?

0 投票
1 回答
2410 浏览

git - gitattributes 文件中的 Git * text=auto 和行尾

基于这篇文章: `.gitattributes` 文件中`text=auto` 的目的是什么?如果 .gitattributes 文件中有以下内容,则 行尾将转换为文本文件的LF :

我刚刚在本地存储库上对此进行了测试:

但是那里说它将转换为CRLF。在上面的帖子中,它说它将转换为LF,而在此测试中并非如此。

所以看起来:

将转换为基于操作系统的行尾类型(Windows 为 CRLF,Linux 为 LF)。但这不是这里所描述的:

https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html

根据以下评论/答案,似乎有此警告:

在 .gitattributes 文件中:

实际上意味着当您进行检出(下次您将文件从存储库检出到您的工作目录)当前以LF结尾的文本文件将被转换为具有CRLF

该警告没有解决行将具有LF结尾的问题,这就是文档在此处所说的内容:

https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html

设置为字符串值“auto” 当文本设置为“auto”时,路径被标记为自动行尾标准化。如果 Git 确定内容是文本,则在签入时将其行结尾规范化为 LF。

0 投票
1 回答
1463 浏览

git - 如何列出 git 存储库中跟踪文件的所有不同扩展名?

我想知道给定仓库中 git 跟踪的文件的所有不同扩展名,以便创建适当的.gitattributes文件。

预期输出示例:

我可以使用什么命令?