- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
基于这篇文章: What is the purpose of `text=auto` in `.gitattributes` file?如果 .gitattributes 文件中包含以下内容,则文本文件的行尾将转换为 LF:
* text=auto
我刚刚在本地存储库上对此进行了测试:
$ git add -A
warning: LF will be replaced by CRLF in [bla]/.gitattributes.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in [bla]/.gitignore.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in [bla]/README.md.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in [bla].csproj.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in
但是那里说它将转换为 CRLF。在上面的帖子中,它说它将转换为 LF,但在此测试中并非如此。
看来:
* text=auto
将转换为基于操作系统的行结束类型(Windows 为 CRLF,Linux 为 LF)。但这不是这里描述的内容:
https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html
根据以下评论/答案,似乎由此产生的警告:
* text=auto
在 .gitattributes 文件中:
warning: LF will be replaced by CRLF in [bla]/README.md.
The file will have its original line endings in your working directory.
实际上意味着当你做一个 checkout -out(下次你从版本库 checkout 一个文件到你的工作目录)当前以LF结尾的文本文件将是转换为具有 CRLF。
该警告NOT 解决了在签到时in 行将以LF 结尾的问题,这就是文档在此处所说的内容:
https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html
设置为字符串值“auto”当文本设置为“auto”时,路径被标记为自动行尾规范化。如果 Git 确定内容为文本,则其行尾在 checkin 时规范化为 LF。
最佳答案
这条消息有点令人困惑。
只要 Git 不打算按照您当前的行结束转换设置来回传输您的文件,Git 就会警告您。此警告不是因为 Git 将 CRLF 放入存储库(它不是)- 出现此警告是因为 Git 将 checkout 的文件与当前磁盘上的文件不同。
无论出于何种原因,您工作目录中的文件都有 Unix 风格的行结尾(或 Unix 和 Windows 风格的混合)。您应该能够使用十六进制编辑器看到这一点。例如,我有一个带有 Unix 样式行结尾的文件:
C:\Temp>hexdump /C foo
00000000 68 65 6c 6c 6f 21 0a |hello!.|
00000007
如果我将文件添加到我的存储库(使用 * text=auto
或 core.autocrlf=true
):
C:\Temp>git add foo
warning: LF will be replaced by CRLF in foo.
The file will have its original line endings in your working directory.
正如 git 所示,我当前工作目录中的文件具有其原始(Unix 风格)行尾:
C:\Temp>hexdump /C foo
00000000 68 65 6c 6c 6f 21 0a |hello!.|
00000007
但是存储库中的文件也有 Unix 风格的行结尾:
C:\Temp>git ls-files --stage
100644 4effa19f4f75f846c3229b9dbdbad14eff362f32 0 foo
C:\Temp>git cat-file blob 4effa19 | hexdump /C
00000000 68 65 6c 6c 6f 21 0a |hello!.|
00000007
但是如果我要求 git 创建文件内容然后它将创建一个不同的文件 - 一个带有 CRLF 行结尾的文件,这就是该警告实际指示的内容:
C:\Temp>del foo
C:\Temp>git checkout -f foo
C:\Temp>hexdump -C foo
00000000 68 65 6c 6c 6f 21 0d 0a |hello!..|
00000008
因此,此消息只是警告您该文件的下一次 checkout 将实际上与您当前磁盘上的内容相匹配。在这种情况下,这可能是无害的,但如果您要添加一个文件,其中行结束配置对它的匹配至关重要。
关于Git * text=auto 在 gitattributes 文件和行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33872793/
这个问题在这里已经有了答案: Range based loop: get item by value or reference to const? (5 个答案) 关闭 6 年前。 如果我有这样的类
最近,我使用 CSS grid 创建了一个布局.虽然这很好用,但我对它的工作原理感到困惑。具体来说,我对 grid-template-rows: auto auto 1fr auto; 这一行感到困惑
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Why don't margin-top: auto and margin-bottom:auto work
我几乎已经尝试了所有我知道的方法,但是当我将我的 Android studio 更新到最新版本时,它仍然显示此错误。我该怎么办? gradle.build 是: buildscript { r
我想创建一个deep_flatten函数模板,该模板将生成包含range ed的元素的join。例如,如果仅考虑嵌套的std::vector,我可以拥有: template struct is_ve
我刚刚看了 Scott Meyers Universal References in C++11有一件事我不太明白。 我对作为“通用引用”的 auto 之间的区别感到有点困惑,即 auto&& 和常规
这个问题在这里已经有了答案: C++11 Range-based for-loop efficiency "const auto &i" versus "auto i" (3 个答案) 关闭 3 年
由于 auto 关键字在编译时获取类类型,我想知道使用 auto* 是否有任何效率,或者是否有任何特殊用途该表达式,因为 auto 在编译时已经获得了指针类型。 最佳答案 这个“新奇的 C++11”与
请问我是否正确,对函数返回值使用 auto&& 总是比使用 auto 更好。例如,在 auto val = someObj.getVal(); 如果 getVal() 返回引用,则 val 将是一个拷
有区别吗: template constexpr decltype(auto) f(T&& x) -> decltype(std::get(std::forward(x))) { retur
我想创建一个 deep_flatten会产生 range 的函数模板深的元素join编。例如,如果我们只考虑嵌套 std::vector s,我可以有: template struct is_vec
我在玩auto在 std::pair .在下面的代码中,函数 f应该返回 std::pair依赖于模板参数的类型。 一个工作示例: 示例 1 template auto f() { if c
我是一名 Android 开发人员,我正在尝试开发一个定制的 Android Auto 应用程序,它可以简单地镜像手机屏幕。 我知道目前 API 仅适用于音乐和消息应用程序,但我会编写一个应用程序来镜
我有一个很大的 div,里面有文字: #big-div { height: 400px; overflow: auto; } 如何才能使当新内容添加到 div(并发生溢出)时,div
我正在尝试设计一个网站,其中包含一个带有溢出的内容区域:自动和一个动态高度。最好是,我希望能够在 overflow: auto div 下方放置一个页眉和一个页脚,并让该 div 占用剩余的空间,但到
这个问题在这里已经有了答案: Does 'auto' type assignments of a pointer in c++11 require '*'? (3 个答案) 关闭 6 年前。 以下在
当使用 auto&& 处理返回左值的函数时: int func() { int v=42; return v; } auto && v = func(); 将 v 视为引用而不是左值会产生
我读了一篇关于 auto 类型推导的文章,使用 decltype 我想知道我在下面的例子中关于如何推导类型的逻辑是否正确(所以如果我是有误请指正:) #include using namespace
这个问题在这里已经有了答案: What's the semantically accurate position for the ampersand in C++ references (3 个回答)
假设我有 class Container { public: T getValue() const { return t; } const T& getCRef() const {
我是一名优秀的程序员,十分优秀!