这不是一个真正的编程问题,是否有命令行或Windows工具(Windows 7)来获取文本文件的当前编码?当然我可以写一个小C#应用程序,但我想知道是否有内置的东西?
我在github上托管了一个git存储库.许多文件最初是在Windows上开发的,我对行结尾并不太谨慎.当我执行初始提交时,我也没有任何git配置来强制执行正确的行结束.结果是我的github存储库中有许多带有CRLF行结尾的文件.
我现在部分在Linux上开发,我想清理行结尾.如何确保文件在github上使用LF正确存储,并在我的工作副本中使用LF?
我已经设置了一个.gitattributes包含text eol=LF; 那是对的吗?有了这个承诺和推动,我可以只是rm我的本地仓库并从github重新克隆以获得所需的效果吗?
我想将文件的全部内容写入缓冲区.该文件实际上只包含一个我需要与字符串进行比较的字符串.
什么是最有效的选项,即使在Linux上也可以移植.
ENV:Windows
我们正在使用第三方PHP引擎来定期更新.这些版本保存在git中的一个单独的分支上,而我们的fork是主分支.
这样我们就可以从新版本的引擎中将补丁应用到我们的fork中.
我的问题是,经过对我们分支的许多提交后,我意识到引擎的初始导入是通过CRLF行结尾完成的.
我将每个文件转换为LF,但这做了一个巨大的提交,删除了100k行并添加了100k行,这显然打破了我们打算做的事情:从第三方引擎的工厂版本中轻松合并补丁.
我知道什么?我怎样才能解决这个问题?我的fork上已经有数百个提交.
最好的方法是在初始导入之后以及在分支我们自己的fork之前以某种方式执行行结束修复提交,并在历史记录中删除那个巨大的行结束提交.
但是我不知道如何在Git中这样做.
谢谢!
我有一个巨大的git repo,最终想用bfg清理.
但首先,我想跟踪并删除HEAD哪个git视为二进制文件...
所以,我正在寻找的是一个命令来查找HEAD中git视为二进制文件的所有文件.
这些没有帮助:
预先感谢您的帮助.
我有一个存储库,其中包含许多自动生成的源文件,我已将其标记为"二进制" .gitattributes(它们已签入,因为并非每个人都可以访问生成器工具).另外,repo在被忽略的目录中有很多source-ish文件(再次,作为构建过程的一部分生成),以及许多实际的二进制文件(例如像图标这样的小资源文件).
我现在想在repo中找到所有非自动生成和非忽略的文件.我以为我只是做了这个find和一些排除,但现在我有一个可怕的find声明与十几个条款(它仍然不完美的工作).git ls-files有效,但显示所有二进制文件没有区别,我必须过滤掉.
所以,我想知道:是否有一个简单的命令我可以运行,它列出了检查到repo的每个文件,并git考虑了一个"文本"文件?
我正在尝试使用 GIT 来跟踪对相当大的 XML 文件(大约 3 Mb)的更改。该文件采用 UTF-8 格式,以 CRLF 行结尾(我在 Windows 10 中工作)。但由于某种原因,GIT 一直认为它是二进制文件,并且不显示任何差异。或者只是无法检测到变化。
Sourcetree 中的差异显示消息“未检测到此文件中的任何更改,或者它是一个二进制文件”
我尝试在.gitattributes中显式设置属性,但似乎这不是原因:
*.xml crlf diff
Run Code Online (Sandbox Code Playgroud)
git check-attr --all -- sorkin.xml
sorkin.xml: diff: set
sorkin.xml: crlf: set
Run Code Online (Sandbox Code Playgroud)
我发现当我将大文件切成三个较小的部分(小于 1 Mb)时,GIT 会正确显示它们的更改。
计算 diff 时,GIT 对文件大小有限制吗?
我知道如何使用 gitattributes 强制 Git 将例如 JPEG 文件视为二进制文件,但实际上 Git 的默认二进制文件列表是什么?或者有吗?我在我的系统上发现了似乎是系统范围的 gitattributes 文件,这是它的内容:
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
Run Code Online (Sandbox Code Playgroud)
这是否意味着默认情况下图像不被视为二进制文件?
编辑:理论上也可能涉及一些“猜测”算法,但我还没有找到任何细节。
GIT中支持多种不同的编码方案:UTF-7,UTF-8,UTF-32,以及非UTF的。
鉴于此,它为什么不支持UTF-16?
有很多问题询问如何获取git以支持UTF-16,但我认为这尚未明确提出或得到回答。