.gitattributes:text = auto是否仍使用core.autocrlf来检测EOL

托马斯·S。

有一个.gitattributes条目

 * text=auto

签出文本文件时使用什么行分隔符?文档指出:

设置为字符串值“自动”

当文本设置为“自动”时,该路径被标记为自动行尾转换。如果Git确定内容为文本,则其行尾在签入时将转换为LF。使用CRLF提交文件后,不会进行任何转换。

未指定

如果未指定text属性,则Git使用core.autocrlf配置变量来确定是否应转换文件。

在我看来,万一text=auto core.autocrlf没关系。我对吗?

星期二

在我看来,在text=auto[in中.gitattributes,具有] core.autocrlf[在配置中]的情况并不重要。我对吗?

大多。git config文档现在说core.autocrlf

将此变量设置为“ true”与将text所有文件属性设置为“ auto”以及将core.eol设置为“ crlf”相同。...该变量可以设置为input,在这种情况下,不执行输出转换。

令人困惑的是git config,文件编制core.eol本身就这样说

设置结束类型的工作目录中使用了具有文件行text属性集时core.autocrlf是假的[我告诉你什么什么时候将其设置为trueinput] ...查看gitattributes(5)有关的更多信息行尾转换。

(黑体字和方括号中的文本)。然而,的说明core.autocrlf会谈有关有效设置core.eol,所以什么当发生core.autocrlf或者是trueinput core.eol设置为crlf

如果我们转到gitattributes文档则会发现此短语已隐藏:

要控制在工作目录中使用哪种行尾样式,请eol对单个文件使用属性,core.eol对所有文本文件使用配置变量。需要注意的是core.autocrlf覆盖core.eol

因此,如果您设置core.autocrlf则不会覆盖core.eol任何一个。这意味着选择的任何内容core.eol将应用为默认设置。但是,如果你设置core.autocrlf,不管你选择的core.eol设置被忽略!


Git中的实际源代码非常曲折(并且多年来发生了许多变化)。但是,有些事情可以说在所有Git变体中都是正确的:

  1. 转换1通常发生在两个地方:文件从索引复制到工作树(“输出”阶段),或文件从工作树复制到索引(“输入”阶段) )。输出端复制发生在git checkout期间git checkout-index,这两个复制都将文件从索引复制到工作树。输入端复制发生在期间git add,将文件从工作树复制到索引。

  2. 视为“二进制”的文件不会被修改。被认为是“文本”的文件是修改的候选者。

因此,* text=auto意味着所有文件都将成为修改的候选文件,并且core.autocrlf具有相同的效果。但是究竟要进行什么修改?这部分很棘手。假设两个不同的配置文档部分中的上述引用对于所有版本的Git都是正确的:

  • 如果对于任何特定路径,您有一个.gitattributes具有特定 设置的设置eol=,则该core.eol设置无关紧要。但这与是否.gitattributes设置无关text=
  • 因此,无论您忘记了什么特定的eol=设置,您的有效core.eol设置都会控制这些转换是什么。

因此,由于core.autocrlf可以更改有效core.eol设置,并且您可以忽略为某些文件设置特定设置,因此即使您已经为所有文件设置了设置textcore.autocrlf设置也就像将core.eol设置更改为。(如果设置为,将需要仔细测试,这会发生什么情况。)crlftext=autocore.autocrlfinput


1这个词通常在这里,因为这是关于文件在Git进出中转换的位置。但是,对于某些操作(例如git diff针对工作树或git merge启用“规范化”),Git必须执行“虚拟签入”或“虚拟签入和签出”,在这种情况下,Git会做一些额外的工作转换。不幸的是,这就是为什么Git中的实际代码如此曲折的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

gitattributes中的`* text = auto eol = lf`有什么作用?

来自分类Dev

.gitattributes中的`* text = auto`和`* text eol = lf`之间有什么区别?

来自分类Dev

gitattributes文件和行尾的Git * text = auto

来自分类Dev

在Windows中覆盖.gitattributes text = auto

来自分类Dev

.gitattributes使用带有过滤器的“ * text = auto”

来自分类Dev

如何用.gitattributes表示core.autocrlf = false?

来自分类Dev

是否有全局方法来应用.gitattributes?

来自分类Dev

是否可以更改.gitattributes中的EOL设置而无需标准化所有文件?

来自分类Dev

在所有使用.gitattributes的平台上的git repo中强制LF eol

来自分类Dev

git从.gitattributes使用什么规则来确定文件类型和行尾?

来自分类Dev

在gitattributes中使用`** /`匹配目录

来自分类Dev

使用gitattributes进行语言示例

来自分类Dev

为什么eol = crlf在.gitattributes中不被认可

来自分类Dev

“ git lfs跟踪”是否比写入“ .gitattributes”更多?

来自分类Dev

.gitattributes合并驱动程序未使用

来自分类Dev

如何检测是否正在使用MemoryMappedFile(C#.NET Core)

来自分类Dev

Windows(git smc client)上的Git拉不尊重.gitattributes的eol = lf

来自分类Dev

.gitattributes 是否需要在每個分支上?

来自分类Dev

Android-使用AppCompatDelegate.MODE_NIGHT_AUTO时如何检测夜间模式是否开启

来自分类Dev

使用CSS功能/功能检测来检测IE11

来自分类Dev

使用Modernizr来检测IE的正确方法?

来自分类Javascript

使用Observable来检测变量的变化

来自分类Dev

adblocker使用哪些条件来检测广告

来自分类Dev

使用间谍来检测方法调用

来自分类Dev

如何使用BehaviorSubject来检测变化

来自分类Dev

无法使用auto参数True_type来检测T :: value()

来自分类Dev

是否可以通过检测鼠标中键来阻止Javascript?

来自分类Dev

如何制作程序来检测实时保护是否开启?

来自分类Javascript

如何在客户端使用JavaScript来检测页面是否已加密?

Related 相关文章

  1. 1

    gitattributes中的`* text = auto eol = lf`有什么作用?

  2. 2

    .gitattributes中的`* text = auto`和`* text eol = lf`之间有什么区别?

  3. 3

    gitattributes文件和行尾的Git * text = auto

  4. 4

    在Windows中覆盖.gitattributes text = auto

  5. 5

    .gitattributes使用带有过滤器的“ * text = auto”

  6. 6

    如何用.gitattributes表示core.autocrlf = false?

  7. 7

    是否有全局方法来应用.gitattributes?

  8. 8

    是否可以更改.gitattributes中的EOL设置而无需标准化所有文件?

  9. 9

    在所有使用.gitattributes的平台上的git repo中强制LF eol

  10. 10

    git从.gitattributes使用什么规则来确定文件类型和行尾?

  11. 11

    在gitattributes中使用`** /`匹配目录

  12. 12

    使用gitattributes进行语言示例

  13. 13

    为什么eol = crlf在.gitattributes中不被认可

  14. 14

    “ git lfs跟踪”是否比写入“ .gitattributes”更多?

  15. 15

    .gitattributes合并驱动程序未使用

  16. 16

    如何检测是否正在使用MemoryMappedFile(C#.NET Core)

  17. 17

    Windows(git smc client)上的Git拉不尊重.gitattributes的eol = lf

  18. 18

    .gitattributes 是否需要在每個分支上?

  19. 19

    Android-使用AppCompatDelegate.MODE_NIGHT_AUTO时如何检测夜间模式是否开启

  20. 20

    使用CSS功能/功能检测来检测IE11

  21. 21

    使用Modernizr来检测IE的正确方法?

  22. 22

    使用Observable来检测变量的变化

  23. 23

    adblocker使用哪些条件来检测广告

  24. 24

    使用间谍来检测方法调用

  25. 25

    如何使用BehaviorSubject来检测变化

  26. 26

    无法使用auto参数True_type来检测T :: value()

  27. 27

    是否可以通过检测鼠标中键来阻止Javascript?

  28. 28

    如何制作程序来检测实时保护是否开启?

  29. 29

    如何在客户端使用JavaScript来检测页面是否已加密?

热门标签

归档