问题标签 [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.
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)
windows - 在 Windows 中覆盖 .gitattributes text=auto
这是非常不直观的:
根据各种媒体的说法,core.autocrlf=false
根本不应该有换行转换。
在项目根目录中,我发现.gitattributes
以下行:
如果我评论它,警告就会消失。问题 - 我怎样才能.gitattibutes
自动覆盖这个设置?
git - gitattributes 过滤器可以删除或添加文件吗?
Git 属性可用于为每个文件设置过滤器,以使工作目录的内容成为存储库内容的转换版本。我想知道这是否可以用来清理Archlinux 的新 AUR 版本 4.SRCINFO
中必须处理的文件。
本质上,有两个文件被调用PKGBUILD
,并且.SRCINFO
都必须存储在存储库中。对于我的情况,可以安全地假设它.SRCINFO
是通过运行mksrcinfo
在PKGBUILD
. 我希望两者都显示在存储库中,但只显示PKGBUILD
在我的本地树中。
如何设置过滤器对,以便
smudge去除
.SRCINFO
,或者甚至更好地不创建它开始和干净的添加
.SRCINFO
,通过运行生成mksrcinfo PKGBUILD
?
git - 如何通过父项目中的 .gitattributes 将子模块中的行结尾强制为 LF?
我有一个存储库来存储我所有的 Vim 设置。它使用子模块来引入带有 Pathogen 的插件(我看过其他插件管理器,目前不感兴趣)。
由于 MSYSGit 在打开 Vim 以获取提交消息时处理行尾的方式,我需要将存储库与 Unix 行尾 (eol=lf) 一起存储。
我尝试在主仓库中添加一个 .gitattributes 文件,其中包含以下内容:
git rm --cached -r .
使用and刷新主存储库后,主存储库中git reset --hard
的行结尾现在是 LF。但是,在子模块内运行相同的命令不起作用。
如何配置我的 git repo 以便使用 LF 行结尾签出子模块?
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 策略的。
gitattributes - SubGit 和 .git 属性
我正在将一个 SVN 存储库导入到 Git 中,并且我有很多带有svn:eol-style
设置的文件。SubGit读取这些属性并为每个文件生成.gitattributes
一行。
有没有办法告诉它对每种类型的文件使用单行(即*.java text
,或者*.java text eol=lf
因为我们有一个风格指南规则要求这样做)?
我试图info/attributes
在导入之前将 . 添加到存储库,但生成的.gitattributes
.
有没有办法做到这一点?
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)。
git - 使用 .gitattributes 使 git 存储带有 CRLF 行结尾的文本文件
我希望 git 在内部存储具有 CLRF 行结尾样式的文本文件,我不只是想在工作目录中看到这样的行结尾(但 WD 还应该包含 CRLF 文件)。可以实现此目的的 .gitattributes 配置是什么?
我需要这个,以便存储库可以与内部也使用 CRLF 的 Mercurial 无缝同步(由于原始文件是这样的)。
在检查了我在网上找到的所有可能配置之后,包括这里,我找不到会产生 CRLF 的解决方案。最后,这些文件最终被存储为 LF。我尝试了以下 .gitattributes 文件:
还尝试了 text=auto, text=crlf ,即使没有第一行,也没有运气。我还在更改此设置之间重新克隆了存储库。
谢谢你。
编辑:在我发布这篇文章 5 秒后,我发现另一个似乎正在工作的片段:
但是我不确定这到底是做什么的。有人可以确认这是我想要的,以后不会咬我吗?
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。
git - 如何列出 git 存储库中跟踪文件的所有不同扩展名?
我想知道给定仓库中 git 跟踪的文件的所有不同扩展名,以便创建适当的.gitattributes
文件。
预期输出示例:
我可以使用什么命令?