错误:GIT合并后编码UTF8的不可映射字符

错误:GIT合并后编码UTF8的不可映射字符,git,javac,utf,git-diff,git-diff-tree,Git,Javac,Utf,Git Diff,Git Diff Tree,在又一次git拉动之后,我的项目停止了构建,并显示了大量消息: error: unmappable character for encoding UTF-8 这些消息指向某些文件标题中的版权符号。有许多文件具有相同的符号,但它们似乎编译得很好。在二进制编辑器中查看时,良好的显示为: C2 A9 而坏的 A9 在vim中查看时,两者都显示为©但IntelliJ Idea显示为菱形 所以我决定在合并时弄乱了一些东西(拉后出现了合并冲突),然后去看看哪些文件发生了更改 git diff-tree -

在又一次git拉动之后,我的项目停止了构建,并显示了大量消息:

error: unmappable character for encoding UTF-8
这些消息指向某些文件标题中的版权符号。有许多文件具有相同的符号,但它们似乎编译得很好。在二进制编辑器中查看时,良好的显示为:

C2 A9

而坏的

A9

在vim中查看时,两者都显示为©但IntelliJ Idea显示为菱形

所以我决定在合并时弄乱了一些东西(拉后出现了合并冲突),然后去看看哪些文件发生了更改

git diff-tree --no-commit-id --name-only -r --full-index --binary 91cbe7b753d39905372c1ea41e04e7a3dbd2566e
但它没有产生任何结果。未找到上一次提交的更改。日志如下所示:

commit 91cbe7b753d39905372c1ea41e04e7a3dbd2566e
Merge: d7b4ae9 0dfc198
Author: Me Me <my.my@gmail.com>
Date:   Wed Dec 23 17:50:46 2015 +0100

    Merge branch 'development' of ssh://fsstash.cool.com:7999/our/server into my-branch

commit 0dfc19850b2e31d72c1d2923321430e8fc1b53cb
Merge: 724b8a7 d3478f9
Author: Good Guy <Good.Guy@gmail.com>
Date:   Wed Dec 23 14:34:33 2015 +0200

    Merge branch 'development' of ssh://fsstash.cool.com:7999/our/server into development
java-版本:1.8.0_66

非常感谢您的帮助

PS:尝试了所有-差异算法={patience | minimal | histogram | myers}-仍然没有发现git diff树的任何更改


PS:
git reset——硬头~1,从命令行发出的git pull origin developermnt
没有帮助,因此与Idea无关。

在本例中,git diff树似乎是错误的diff。这个 git diff——仅命名a35f25470bc8219e3f2a45316963dde660091bcb 0dfc19850b2e31d72c1d2923321430e8fc1b53cb

揭示了分支之间的许多变化,其中一个分支更新了maven编译器插件配置,将java版本从7更改为8。看起来javac 8将编码视为错误,而javac 7将编码视为警告(尽管将完全相同的“错误:不可映射字符用于…”警告写入日志。

git diff--name only
确实更适合于解析,如git 2.32(Q2 2021)所示,这澄清了git树中记录的路径名最常见(但不一定)以UTF-8编码

参见作者(2021年4月20日)
(于2021年4月30日合并)

:澄清git diff中的文件名编码 AFAICT解析()的输出是以编程方式获取由功能分支修改的文件列表的理想方式

除非您知道文本的编码方式,否则无法解析文本

diff选项
现在包括在其

仅显示更改文件的名称。文件名通常用UTF-8编码

diff选项
现在包括在其

就像
--仅名称
一样,文件名通常用UTF-8编码


您使用了什么工具来解决冲突?vim?尝试将版权符号替换为转义码
©
。但这意味着我必须提交我真正想要避免的更改-每次提交都会得到审查,我应该以某种方式解释为什么要更改这些版权。我的git和/或IntelliJ Idea,我想知道什么-正如我所说,还有更多的文件使用copyrithg,如果下次其他部分被破坏了怎么办?@user656449找出根本原因并防止它对未来很好,但是如果你有一个内容错误的文件,如果没有提交,你就无法修复它,所以克服它吧部分:)
locale
LANG=ru_RU.UTF-8
LANGUAGE=ru:en
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC=ru_UA.UTF-8
LC_TIME=ru_UA.UTF-8
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY=ru_UA.UTF-8
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER=ru_UA.UTF-8
LC_NAME=ru_UA.UTF-8
LC_ADDRESS=ru_UA.UTF-8
LC_TELEPHONE=ru_UA.UTF-8
LC_MEASUREMENT=ru_UA.UTF-8
LC_IDENTIFICATION=ru_UA.UTF-8
LC_ALL=