首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gitattributes在签出时被忽略。

gitattributes在签出时被忽略。
EN

Stack Overflow用户
提问于 2019-01-08 15:08:35
回答 1查看 1.1K关注 0票数 2

在我的公司,我们最近从svn转到了git,因此总体的技术水平仍然很低。

我们决定在每台机器上设置core.autocrlf=true,并将".gitattributes“文件用于"finetuning”目的。

我的主要关注点是一个与apache的集成项目,将文件从"a“转换为"b”。由于很多端点不同,我需要确保编码、行尾等。在我对apache camel的测试中,我从测试资源中提取一个静态文件,转换它,并将输出与测试资源中的另一个静态文件(基本上是预期的输出)进行比较。

在我们引入"core.autocrlf=true“之前,这过去一直运行得很完美。从那时起,在jenkins上测试似乎成功地完成了,但是当我在本地运行时,很多测试都失败了。(在"core.autocrlf=true“介绍之后,我刚刚克隆了这个仓库)。我搜索了一个预期的输出文件。如果我检查我的机器上的线尾(win 10),它们是"crlf“。如果我从存储库中检查文件的行尾,它们是"lf“。这种转换在core.autocrlf=true中是预期的。

但是,我尝试添加一个".gitattributes“文件。有了这两种规格:

代码语言:javascript
复制
* text=auto
*.xml binary

我只是使用了"*.xml“作为更简单的测试,如果它有效的话。基本上,我需要的是,我所有的文件在测试-资源应该被忽略。但是使用上面的".gitattributes“文件,我仍然可以在我的机器上得到带有crlf的testfile,即使我刚刚克隆了整个repo并做了"git签出分支名称”。如果我这么做,那也是同样的行为

代码语言:javascript
复制
*.xml text eol=lf 

代码语言:javascript
复制
*.xml -text" etc.

根据我的理解,到目前为止,如果我将路径或文件类型指定为“二进制”git,则如果我执行git签出、git提交或git之类的操作,则根本不应该进行任何转换。

我是误解了什么,还是我只是做错了什么,还是做不到该做的事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-11 09:53:15

我能够解决这个问题,但我可能需要首先写下设置的情况以及最初是如何做到的。

因此,我们有一个主分支作为默认分支(基本上是包含“活动代码”或即将运行的代码的分支),以及开发分支。我们从开发中创建特性和错误修复分支,并在bug修复或功能完成时将它们合并回。

所以我最初做的是:在bitbucket上,我从develop创建了一个分支(让我们把它称为branchX)。在本地,我打开了git-bash控制台:

代码语言:javascript
复制
git pull
git checkout branchX

然后,我在第一篇文章中创建了带有规范的gitattributes文件。在那之后,我背诵并推送到遥控器上。我完全删除了我的本地回购,并做了:

代码语言:javascript
复制
git clone remoteRepoUrl
cd repoName
git checkout branchX

之后,文件仍然显示为crlf而不是lf。

在这里的答案之后,我又试了一次,直到最后一部分,我也是这样做的。而不是克隆和签入我的分支,我做了

代码语言:javascript
复制
git clone --branch branchX remoteRepoUrl

这克隆回购,但直接检查被通缉的分支。我的gitattributes规范现在似乎起作用了。

但奇怪的是,如果我这么做

代码语言:javascript
复制
git checkout master

现在,我仍然可以得到lf行尾,但实际上不应该这样,因为主分支没有.gitattributes文件,因此应该只使用autocrlf。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54094627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档