在尝试为开发人员标准化平台时,我的一个需求是提交,.git/config以便每个人都有相同的CRLF配置,而不会忘记手动设置它.
我该如何设置?
我对所有这些消极情绪感到担忧autocrlf.如果不起作用,为什么不删除此功能?要么这个功能的制作者被误解,要么他们用它做了一个失败的实验,它应该被删除,以阻止更多的人浪费他们的时间(阅读模糊的手册页,提问,回答这些问题的人等).
当我git diff在C#文件上使用时,我看到这样的东西:
diff --git a/foo.cs b/foo.cs
index ff61664..dd8a3e3 100644
--- a/foo.cs
+++ b/foo.cs
@@ -15,6 +15,7 @@ static void Main(string[] args)
string name = Console.ReadLine();
}
Console.WriteLine("Hello {0}!", name);
+ Console.WriteLine("Goodbye");
}
}
}
Run Code Online (Sandbox Code Playgroud)
hunk标题行包含当前方法(static void Main(string[] args))的第一行,这很好.然而,它似乎并不是非常可靠......我看到很多情况它不起作用.
所以我想知道,这段摘录是从哪里来的?是否git diff以某种方式识别语言的语法?有没有办法定制它?
是否有可能要求Git在需要合并时将其放入文件的行末尾使用CRLF而不是LF?

如果在没有可见EOL字符的情况下解决文本编辑器中的冲突,如果按选择删除,很容易意外地将这些LF合并到最后:

离开你:

现在有两个LF已经潜入你的CRLF文件了!
显然,一种替代方案是在解析合并时只需要更多关注行结尾,但我想我会问有什么方法可以告诉Git将CRLF用于它在这里生成的行.
我在提交之前使用 nbstripout 删除 Jupyter 输出。nbstripout 生成一个.gitattribute如下所示的文件:
*.ipynb filter=nbstripout
*.ipynb diff=ipynb
Run Code Online (Sandbox Code Playgroud)
这按预期工作,每当 I git status、git diff、 或时git commit,它不包括 Jupyter 输出。但是,当我删除第二行时,它会执行相同的操作。
在这种情况下做什么*.ipynb diff=ipynb?