问题标签 [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 回答
251 浏览

php - 禁用 git 属性 $id$ 过滤器的方法?

我知道这不是一个讨论产品特定问题的地方,但我尝试提出一个在 Git GUI 产品中引起的 Git 特定问题。

Phing PHP 库的源代码标头中有 $id$ 符号,Git GUI 产品不断将 SHA-1 gitattribute 过滤器扩展到这些文件,使它们显示为修改版本。请看下面的截图。

在此处输入图像描述

有人可以在 gitattribute 文件中禁用此内置过滤器吗?它只能应用于 PHP 文件。

0 投票
3 回答
1920 浏览

c# - git中的值是什么意思?

在一个.gitattributes文件中,我找到了以下行

这是什么意思?

0 投票
1 回答
231 浏览

git - .gitattributes export-ignore if in current directory but include if in subdirectory

如何使用 .gitattributes 忽略父目录中的目录但将目录包含在子目录中?

例如,考虑一个/config目录。根目录有一个/config目录,也有一个位于/app/config

添加

会为根解决问题,/config但它也会删除子目录/app/config

如何保留子目录/app/config

0 投票
1 回答
2071 浏览

git - .gitattributes 未使用合并驱动程序

起初,我知道这个问题How do I tell git to always select my local version for conflicted merges on a specific file?但是这篇文章对我没有帮助,由于我的声誉,我无法添加任何评论。

http://git-scm.com/book/en/Customizing-Git-Git-Attributes建议将合并策略设置为我们的路径,而不是设置自定义合并驱动程序。

添加自定义合并驱动程序返回退出代码 0 的好处和区别是什么?

我的仓库顶层有一个 .gitattributes 文件:

但是,当我将两个分支与已更改的 pom.xml 文件合并时,无法解决合并问题:

我得到一个标准的合并冲突结果:

我究竟做错了什么?

0 投票
5 回答
5444 浏览

git - 分支之间的 git 涂抹/清洁过滤器

有许多涉及涂抹/清洁过滤器的相关问题 - 我花了几个小时阅读它们,并尝试了各种选项,但仍然失败。我希望我能以一种我得到适合我的答案的方式提问。

具体来说,我已经阅读了大部分答案链接回的页面:


tl;博士

这是一个详细的问题,但总结是:

  • 我可以将DEBUG = false文件存储在一个分支和DEBUG = true另一个分支中,使用涂抹/清洁过滤器来管理该文件吗?如何?

背景

我在 bitbucket 上托管了各种远程存储库。我在 Win8 上使用 SourceTree,将远程存储库克隆到我的笔记本电脑。我为开发、功能、发布等创建不同的分支(遵循成功的 Git 分支模型,无论好坏)。

我有一个名为的 Android java 类Dbug.java,其中包含一个布尔值,它在我的代码中打开/关闭各种调试日志记录、模拟等功能。

我希望这个值出现false在我的“生产”(主)分支上,并且出现true在我的特性分支上。

  • 这可能使用过滤器,还是我已经误解了用例?
  • 我不确定过滤器是否在同一个本地托管存储库的 2 个分支之间像这样工作,或者过滤器是否仅在 2 个存储库之间工作。

创建过滤器

在本地工作,我检查了生产分支。我创建了一个名为的测试文件debug_flag.txt,其内容如下:

我在本地 repo 的根目录中创建了一个文件,.gitattributes并添加了过滤器引用:

.git/config我用过滤器定义更新了文件:

  • 据我了解,这应该确保我的文件在生产中始终具有错误值,但当我从生产分支时将具有真实值。
  • 这是一个正确的理解吗?

测试过滤器

我使用以下方法创建了一个新分支test

我检查了我的文件的内容:

  • 我希望看到true文件中的值
  • 当我签出文件时,“涂抹”过滤器不应该运行吗?

我在文件中添加了一个新行,并提交了。然后我切换回生产分支,这就是事情变得奇怪的地方。

如果我查看 SourceTree 中的文件,则该分支自创建以来没有任何更改。这是我所期望的,因为唯一的更改是在不同的分支上进行的。

如果我查看终端或 Notepad++ 中的文件,我发现我的值已更改:

我还没有合并测试分支对面的更改,我还没有在生产分支上提交,但是文件已经更改

  • 看起来污迹过滤器是在这个分支内的文件上运行的,但不是跨分支。

我错过了这个难题的一个重要部分,希望它是一些简单的东西,可以被有经验的人发现。

我敢打赌,这是对这个概念的简单误解。

请提示任何缺少的信息...


根据 VonC 的回复更新

设置基本过滤器效果很好。将文件中的过滤器定义config为:

创建新分支修复 false -> true,合并更改 true -> false。

将更改限制在生产(主)分支需要自定义脚本,这些脚本知道它们正在从哪个分支运行。所以config文件变成了:

master_clean.sh:

master_smudge.sh:

在这一点上,我遇到了 SourceTree 看到的内容与 Notepad++ 中显示的调试文件内容之间的不一致。SourceTree 显示了更改,但 Notepad++ 没有。

我接受VonC 的回答,因为它回答了我提出的基本问题。

但是,我可能会实施我编写的解决方案,因为它以一种更简单的方式(对我而言)解决了我试图解决的潜在问题:在不同的分支上保留不同的配置文件。

0 投票
1 回答
3915 浏览

git - 根据文件类型选择 git mergetool

运行时git mergetool,我想让 git 根据文件扩展名选择使用的合并工具。我怎样才能做到这一点?

这里提出了一个类似的问题:Git: configure patterns for difftool and mergetool ,答案是编写自定义合并驱动程序。但是,似乎这将在 上执行git merge,而我希望在 上选择合并工具git mergetool

似乎必须有某种方法可以用 .gitattributes 指定它,但我似乎无法弄清楚如何。有什么建议吗?

0 投票
0 回答
1673 浏览

git - TeamCity 的 git checkout 与本地 git checkout 不同

我在 Windows 机器和我们的一个 git 存储库上运行 TeamCity (8.1) 时遇到问题。很少有文件(千分之二 - *.bytes 扩展名,二进制)在 TeamCity 结账时比在开发人员机器上具有更大的大小。如果我关闭“将行尾转换为 CRLF”,这些文件的大小是相同的,但是项目的其余部分无法正确构建 + 开发人员机器确实有 core.autocrlf=true。

我还尝试在 .gitattributes 中将 *.bytes 设置为二进制文件,但这看起来被 TeamCity(?)忽略了。

有谁知道让这个工作的方法?

谢谢

0 投票
1 回答
2768 浏览

git - .gitattributes 文件中的“*.jpg binary -delta”有什么作用?

该线程建议放置

.gitattributegit 中的 repos 文件中,但我不确定它的作用。我找不到 git 的“-delta”标志的任何示例。

目的显然是加快较大文件的提交或推送时间。

0 投票
1 回答
260 浏览

windows - 使用 .gitattributes 时 Git 提交错误的换行符

我遇到了合并冲突导致整个文件发生冲突的问题。这最终导致本地文件的换行符在合并时都变成了 unix 样式的换行符(LF)(在合并之前,开发和功能分支在签出时都有 CRLF 换行符)。

如果我跑

git status 不会显示任何更改。但是,当我删除该.gitattributes文件并再次删除所有/添加所有文件时,它导致某些文件被更新为不同的新行。例如对于一个 100 行的文件,它会说 100 行被删除,100 行被添加。在对两个分支执行此操作后,合并就很好了。

.gitconfigautocrlf = true被设置并且 .gitattributes 文件只有这些行。我认为以下几行只会影响合并策略。

为什么这个 .gitattributes 会改变新行的提交方式?

同样将 autocrlf 设置为 true 我不确定为什么合并会比较 LF 与 CRLF,除非 .gitattributes 中的某些内容可能会覆盖它。


来自https://help.github.com/articles/dealing-with-line-endings

或者,您可以通过配置一个特殊的 .gitattributes 文件来配置 Git 在每个存储库的基础上管理行尾的方式。该文件被提交到存储库并覆盖个人的 core.autocrlf 设置,确保所有用户的行为一致,无论他们的 Git 设置如何。.gitattributes 文件的优点是您的行配置与您的存储库相关联

这清楚地表明 .gitattributes 能够覆盖 autocrlf,但其中没有设置告诉它进行任何 eol 转换。也许有一些隐式使用的默认值。

0 投票
1 回答
775 浏览

git - 在 gitattributes 文件的一行中使用多个过滤器是否存在固有问题?

.gitattributes 文件中的每行可以有多个 git 属性吗?如果是这样,它们执行的顺序是什么?

我一直看到一些奇怪的行为,他们没有以人们可能期望的方式被执行。

这是我所指的我的 .gitattributes 文件之一的示例:

然后在我的 repo 的 git 配置文件中,我有:

等等。

单个 shell 脚本只是带有多个 -e 参数的单行 sed 脚本,例如:

当然它们被设置为可执行并且权限是正常的。所有的 shell 脚本都已经过测试,所以我知道如果在命令行上正确使用它们就可以工作。

一些 shell 脚本似乎被 git 调用了。但不是所有的。我不明白。当我重新检查 HEAD 时没有错误出现。

到底是怎么回事?我的方法中有什么会导致问题吗?