是否可以在.gitattributes文件中添加注释或备注?
如果是,注释行的确如何?
这是我的用例:我在我的Git仓库中提交了PNG和其他东西.我想对我想要提交的每个PNG应用一个特定的进程,这是我最终想要提交的进程的结果(可能修改的PNG).
一开始我想到了一个钩子(比如a pre-commit),但它有点奇怪,因为这个过程会改变文件,所以我需要重新添加它!根据我所读到的,没有pre-add钩子(或类似的东西).
可能是一个解决方案是创建一个git别名?但我不想改变 - 太多 - 人们的工作方式,我正在寻找一种平稳透明的方式.
如果你有线索......即使线索是改变我的过程想法.
包括该行时
*.py diff=python
Run Code Online (Sandbox Code Playgroud)
在本地.gitattributes文件中,git diff为不同的Python文件(具有更改所在的函数的名称等)生成漂亮的标签.
是否有可能要求git对所有 git项目中的所有 Python文件使用此diff模式?我尝试设置全局〜/ .gitattributes,但本地git存储库不使用它.有没有比使用?初始化每个新git项目更方便的方法?ln -s ~/.gitattributes
我一直在尝试将特定文件设置为始终使用lf而不是crlf而不管本地系统上的autocrlf.
我尝试在仅包含的项目的根目录下创建.gitattributes,SquishIt.Tests/js/*.js eol=lf我也尝试过SquishIt.Tests/js/ eol=lf.我将这两个尝试都推送到我的遥控器,然后尝试在本地克隆两次.在两种情况下,/ js /下的文件总是出现CR + LF,因为autocrlf对我来说是全局的.
我在Windows机器上,以防万一不清楚.我试图实现的是什么?
我用一些图像文件创建了一个仓库。我有要从 lfs 中排除的 .gitignore 和 .gitattributes。所以我需要通过 lfs 跟踪所有文件,而不是 .gitignore 和 .gitattributes。
我正在使用 Sourcetree,我在 .gitattributes 中尝试过:
.gitignore text
.gitattributes text
* filter=lfs diff=lfs merge=lfs -text
Run Code Online (Sandbox Code Playgroud)
但是我所有的文件都被 lfs 跟踪。
有没有具体的例子,为了通过Linguist属性检测GitHub中的错误语言?
资料来源:https://github.com/github/linguist
在合并我的同事的捆绑后,我发现了CRLF问题.有时将带有LF的行混合到源中,可能是合并到的源.因此,我们决定添加.gitattributes包含以下内容的文件(删除注释):
*.cpp text
*.h text
*.inc text
*.cfg text
*.dic text
*.sln text eol=crlf
*.vcxproj text eol=crlf
*.filters text eol=crlf
*.user text eol=crlf
*.rc text eol=crlf
*.rc2 text eol=crlf
Run Code Online (Sandbox Code Playgroud)
现在我观察到奇怪的行为.我可以看到很多modified: ...不应该存在的文件(即未分级的).我试过git reset --hard,但文件仍然具有相同的状态.我试图再次克隆存储库 - 结果相同.
我git version 1.7.11.msysgit.0已从Git-1.7.11-preview20120620.exe下载的Windows 安装当前版本安装.
我还应该尝试什么?
谢谢,彼得
我的git存储库中有许多模板文件,它们以不同的速率变化.然后将它们用于生成HTML页面.如果有人报告问题,我希望他们能够告诉我哪个版本的模板文件存在问题.目前,我在更改文件时手动输入日期.或者,我试着.我大部分时间都忘记了.
至少在理论上,我应该能够使用git smudge和clean过滤器来修复文件并自动插入上次更新的日期.这会很棒.
除了我在一台机器上开发,当我准备好时,我推/拉到另一台机器.
如何在另一台机器上显示污迹和清洁过滤器?我不想在路径中添加奇怪的脚本; 这只是这个存储库所需要的,所以我想让它完全自包含.在线的一切都说"将此过滤器定义添加到〜/ .gitconfig,然后将这些脚本添加到您的路径,然后设置存储库.gitattributes文件".我想要它,这样如果我去一台新计算机并克隆存储库,所有的清理和涂抹都会自动配置.
有没有人这样做过?
有人能帮我吗.我正在使用Git(GitHub)并尝试*.sql在gitattributes中决定将文件设置为什么.我见过人们用
*.sql diff=astextplain
*.sql diff
*.sql text=auto
Run Code Online (Sandbox Code Playgroud)
我被建议将其设置为第二个选项,但我只是想知道它与其他两个选项有什么区别.
我有一个.gitattributes清理过滤器,用于在提交之前删除文件中的所有注释.
$ cat .git/config
[filter "cleancomments"]
clean = "grep -v '^#'"
$ cat .gitattributes
* filter=cleancomments
Run Code Online (Sandbox Code Playgroud)
我有一个文件'test',其中包含以下内容(在存储库中提交):
This is a file with random content
Run Code Online (Sandbox Code Playgroud)
现在我对'test'进行修改并添加注释:
This is a file with random content
# and some comments
# like this
Run Code Online (Sandbox Code Playgroud)
git status 现在告诉我:
modified: test
Run Code Online (Sandbox Code Playgroud)
但是git diff是空的(应该如此).
我不完全清楚为什么git status不使用过滤器来决定文件是否被修改,但我认为这是它的实现方式.
对我来说真正神秘的是:
如果我这样做:
git add test
Run Code Online (Sandbox Code Playgroud)
然后突然文件'test'不再标记为已修改,并且它不会出现在git索引中.为什么是这样?