这是我在IntelliJ中观察到的奇怪问题。 show-diff总是将当前本地版本与git的旧提交(不是最新提交)进行比较。理想情况下,应将其与最新提交进行比较。 如果文件是在该提交之后创建的,则错误为“不是有效的对象名称”。 要绕过此问题,我必须右键单击-> Git->比较,然后选择最新版本。 任何线索可能是什么问题? 我试图在IntelliJ项目文件夹中搜索此提交ID,但找不到任何提交ID。还将Git CMD更新为最新版本,但没有任何缓解。
答案 0 :(得分:1)
要显示本地更改中文件的差异,IntelliJ会调用git log -n1 HEAD -- path/to/file
获取最新修订的哈希值,然后使用git cat-file -p hash:path/to/file
获取文件内容。后者是“无效对象名称错误”的结果。
似乎HEAD被git错误地解决了,我对此表示怀疑,或者某些东西(例如Git Scope之类的第三方插件)改变了逻辑。
另一个可能的原因-一个棘手的嵌套Git回购,其中包括直到有问题的提交为止的历史记录。在这种情况下,可能会从该存储库中请求Diff。
您可以检查错误,并且IDE执行的所有命令都会为#git4idea.commands.GitHandler
启用调试日志记录(使用帮助-调试日志设置... )。