我正在使用 git 扩展来实现简单的 git 功能。我试图将它用于旧的 gupta 代码。文件中有很多二进制和元数据:
[...]
.head 7 + On cAM_F3
.head 8 - Call c_fktToggleButtonPerson( )
.head 5 + Pushbutton: pbPersonAG
.data CLASSPROPSSIZE
0000: 2400
.enddata
.data CLASSPROPS
0000: 5400610062004300 680069006C006400 4E0061006D006500 73000000FFFE0200
0020: 00000000
.enddata
[...]
不过效果还不错。我添加*.apl diff
到 .gitattributes 以便 git 扩展正确地向我显示更改。虽然我注意到在进行合并和挑选时 git 并不关心这些变化,只是它是否改变了,这让它有点乏味。所以它仍然将文件作为二进制处理。
所以我了解到文件编码是根据 WinMerge 的 ISO-10646-UCS-2 BOM 或根据 Notepad++ 的 UCS-2 LE BOM。因此,我将 .gitattributes 更改为*.apl diff working-tree-encoding=UCS-2 eol=CRLF
并忽略了 git 操作将需要更长时间的警告,因为它现在正在转换文件。这些文件的第一个更改包含“删除所有内容并重写所有内容”可能是因为它更改了编码(?)
之后,它们在之前/之后看起来更好,但 WinMerge没有正确处理编码,并且对于第一次提交,它只处理一半。
做差异(在 gitextensions 中是在能够提交之前自动完成的)似乎需要很长时间。我还注意到,如果我检出其他分支并在之后返回,IDE 似乎在读取更改的文件时出现问题。
我不确定提交前的额外等待是否值得更好的合并/樱桃挑选过程的潜力。而且我不知道我是否可以修复损坏的文件。
在我重做一些工作之前,我想得到一些建议,我应该做什么,我应该在我的 .gitattributes 中写什么?我应该使用不同的工具吗?
提前致谢。
编辑:似乎 git 在将内部使用的 UTF-8 转换为 UCS-2 时存在问题。在尝试重置某些未提交的工作时,我有时会收到 git 无法转换文件的错误。