如何告诉git svn文件不是二进制文件

如何告诉git svn文件不是二进制文件,git,svn,migration,git-svn,gitattributes,Git,Svn,Migration,Git Svn,Gitattributes,我正在使用Git SVN将一个大型SVN回购(~28k次提交)转换为Git。 当这个过程结束时(~1个半星期),我遇到一些.ps1文件在diff中被当作二进制文件处理。 我在master上提交了一个.gitignore文件(当然是在转换之后),它告诉git将文件视为文本: * -text *.snk binary *.ico binary *.chm binary and so on... 注意:-文本只告诉它按原样处理行结尾(不将它们与Unix行结尾一起存储在其数据库中) 当然,我只能在转换

我正在使用Git SVN将一个大型SVN回购(~28k次提交)转换为Git。 当这个过程结束时(~1个半星期),我遇到一些.ps1文件在diff中被当作二进制文件处理。 我在master上提交了一个.gitignore文件(当然是在转换之后),它告诉git将文件视为文本:

* -text
*.snk binary
*.ico binary
*.chm binary
and so on...
注意:-文本只告诉它按原样处理行结尾(不将它们与Unix行结尾一起存储在其数据库中)

当然,我只能在转换后添加.gittributes

.gittributes在以前提交/差异的Git扩展中不太适用,但这可能是我现在不想讨论的另一个问题。主要问题是以二进制格式存储在git中的文件

我在某个地方读到,您可以在.git/INFO下存储一个gittributes。我可以在转换过程之前这样做,但我没有再尝试,因为转换需要一周多的时间,我希望在第一次成功时就把它做好

基本上我的问题是: 记住转换后的存储库:我可以将现有git存储库中的现有二进制文件转换为文本文件吗

如果不是:我如何告诉git svn在整个转换过程中使用gitattributes将哪些文件视为文本/二进制文件

编辑: 问题不在于转换中的任何东西(git故意将文件视为二进制文件),而在于“git diff”或git扩展名将文件视为二进制文件。(见答覆)
当使用diff工具(例如BeyondCompare)时,您仍然可以使用这些文件。这在历史上只是有点烦人。自文件按原样迁移以来,转换工作无误。(即UTF-16)

二进制属性“宏”是
-diff-merge-text
的缩写(请参阅)

与影响存储库和工作副本版本之间文件行尾转换的
文本属性相反,
差异
合并
-属性不影响Git存储文件的方式。后两个属性只影响Git解释文件内容的方式(例如Git如何为文件创建差异/补丁)

如果在
.gittributes
中没有明确的
.ps1二进制文件
,或者
.ps1-diff
,那么
git diff
.ps1
文件解释为二进制文件的原因可能是它们的编码。例如,请注意Git不支持UTF-16/UCS-2

如果是这种情况,您可以创建一个自定义的“diff驱动程序”,将文件转换为UTF-8(如中建议的)


或者,由于Windows PowerShell还可以处理UTF-8脚本文件,因此您可以将所有
.ps1
文件转换为UTF-8。(如果要转换现有/迁移提交中的文件,可以使用。)

这正是我的问题所在。我们团队中的工具不一致,因此存储库中有一些UTF-16文件。在Notepad++或programmaticaly(Powershell)中可以很容易地看到编码