Git不能差异或合并UTF文件中的.cs文件
一位朋友和我在同一时间处理同一个.cs文件,当发生合并冲突时,git指出存在冲突,但该文件未加载通常的“HEAD”“>>>”内容,因为.cs文件是二进制文件。 所以我们添加了很多东西(* .cs文本等等) - 我们的.gitattributes文件让git把它当作一个没有用的文本文件。
那就是当我们意识到git可以区别其他.cs文件而不是这个。 原因是因为它包含一些中文字符,所以它在unicode编码中。
那么我们如何制作git diff或合并utf-16或utf-8格式的文件呢?
引人入胜的事情是,如果我推,gitlab显示完全不同。 所以我没有得到如何git可以在服务器上的差异,但不是与bash。
我有一个c ++项目的* .rc文件的类似问题,并且发现解决这个问题的最好方法是使用git的污迹和干净的过滤器以UTF-8格式将所有内容存储在存储库中,然后在写入时转换为utf-16到工作目录。
这样,git可以做任何事情,例如差异,合并或任何对utf8文本没有任何影响的工作,但您的工作副本将包含utf16,这将使Visual Studio保持高兴。
要配置它,请确保您使用的是具有iconv可用的git版本(msysgit的最新版本),并将以下内容添加到〜/ .gitconfig文件中:
[filter "utf16"]
clean = iconv -f utf-16le -t utf-8
smudge = iconv -f utf-8 -t utf-16le
required
然后在你的.gitattributes文件中添加:
*.rc filter=utf16
resource.h filter=utf16
如果您已经将现有的utf16文件存储为二进制文件,那么您需要将它们从存储库中删除并重新添加它们。
git rm --cached <names-of-utf16-files>
git commit -am "removed utf16 files"
git add <names-of-utf16-files>
git commit -am "added utf16 files as utf8"
现在一切都应该工作。
链接地址: http://www.djcxy.com/p/73249.html