问题标签 [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.
php - 禁用 git 属性 $id$ 过滤器的方法?
我知道这不是一个讨论产品特定问题的地方,但我尝试提出一个在 Git GUI 产品中引起的 Git 特定问题。
Phing PHP 库的源代码标头中有 $id$ 符号,Git GUI 产品不断将 SHA-1 gitattribute 过滤器扩展到这些文件,使它们显示为修改版本。请看下面的截图。
有人可以在 gitattribute 文件中禁用此内置过滤器吗?它只能应用于 PHP 文件。
c# - git中的值是什么意思?
在一个.gitattributes
文件中,我找到了以下行
这是什么意思?
git - .gitattributes export-ignore if in current directory but include if in subdirectory
如何使用 .gitattributes 忽略父目录中的目录但将目录包含在子目录中?
例如,考虑一个/config
目录。根目录有一个/config
目录,也有一个位于/app/config
添加
会为根解决问题,/config
但它也会删除子目录/app/config
。
如何保留子目录/app/config
?
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 文件合并时,无法解决合并问题:
我得到一个标准的合并冲突结果:
我究竟做错了什么?
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 的回答,因为它回答了我提出的基本问题。
但是,我可能会实施我编写的解决方案,因为它以一种更简单的方式(对我而言)解决了我试图解决的潜在问题:在不同的分支上保留不同的配置文件。
git - 根据文件类型选择 git mergetool
运行时git mergetool
,我想让 git 根据文件扩展名选择使用的合并工具。我怎样才能做到这一点?
这里提出了一个类似的问题:Git: configure patterns for difftool and mergetool
,答案是编写自定义合并驱动程序。但是,似乎这将在 上执行git merge
,而我希望在 上选择合并工具git mergetool
。
似乎必须有某种方法可以用 .gitattributes 指定它,但我似乎无法弄清楚如何。有什么建议吗?
git - TeamCity 的 git checkout 与本地 git checkout 不同
我在 Windows 机器和我们的一个 git 存储库上运行 TeamCity (8.1) 时遇到问题。很少有文件(千分之二 - *.bytes 扩展名,二进制)在 TeamCity 结账时比在开发人员机器上具有更大的大小。如果我关闭“将行尾转换为 CRLF”,这些文件的大小是相同的,但是项目的其余部分无法正确构建 + 开发人员机器确实有 core.autocrlf=true。
我还尝试在 .gitattributes 中将 *.bytes 设置为二进制文件,但这看起来被 TeamCity(?)忽略了。
有谁知道让这个工作的方法?
谢谢
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 转换。也许有一些隐式使用的默认值。
git - 在 gitattributes 文件的一行中使用多个过滤器是否存在固有问题?
.gitattributes 文件中的每行可以有多个 git 属性吗?如果是这样,它们执行的顺序是什么?
我一直看到一些奇怪的行为,他们没有以人们可能期望的方式被执行。
这是我所指的我的 .gitattributes 文件之一的示例:
然后在我的 repo 的 git 配置文件中,我有:
等等。
单个 shell 脚本只是带有多个 -e 参数的单行 sed 脚本,例如:
当然它们被设置为可执行并且权限是正常的。所有的 shell 脚本都已经过测试,所以我知道如果在命令行上正确使用它们就可以工作。
一些 shell 脚本似乎被 git 调用了。但不是所有的。我不明白。当我重新检查 HEAD 时没有错误出现。
到底是怎么回事?我的方法中有什么会导致问题吗?