threads / discuss / 30812

Confusing error message

Subject: Confusing error message

## tl;dr

3 messages between Jun 14, 2012 and Jun 14, 2012.

replies: 2people: 2as markdown or json

Phil Hord· Jun 14, 2012, 22:54 UTC · lore

I messed something up during a rebase in a moved file (probably because I had rename detection turned off). So now I want to fix it.

I think I have the commit amended right, but to be sure I want to diff the old file and the new file.

  $ git diff newfile HEAD^:oldfile
  fatal: Path 'oldfile' exists, but not 'oldfile'.
  Did you mean 'HEAD^:oldfile' aka 'HEAD^:./oldfile'?

This was confusing, so I tried different variants. This one produced no output, suggesting no differences:

  $ git diff -- newfile HEAD^:oldfile
But this one shows me that there are differences:
  $ git diff HEAD^:oldfile newfile
And so did this one:
  $ git show HEAD -M

Am I spelling the syntax wrong? Is the <ref>:<path> syntax not allowed on diff? If so, why all the inconsistency?

In case I am misreading something here, here is the unmolested command and output I am using:

$ git diff Tasker_Servers/Server_Common/GuiConfig.h HEAD^:./Tasker_Servers/Server_CommonGui/GuiConfig.h fatal: Path 'Tasker_Servers/Server_CommonGui/GuiConfig.h' exists, but not 'Tasker_Servers/Server_CommonGui/GuiConfig.h'. Did you mean 'HEAD^:Tasker_Servers/Server_CommonGui/GuiConfig.h' aka 'HEAD^:./Tasker_Servers/Server_CommonGui/GuiConfig.h'? $ git --version git version 1.7.11.rc3.219.g94bee05

Phil
Junio C Hamano· Jun 14, 2012, 23:14 UTC · re: Phil Hord · lore

Re: Confusing error message

Phil Hord <phil.hord@gmail.com> writes:
Show 9 quoted lines
> I messed something up during a rebase in a moved file (probably
> because I had rename detection turned off).  So now I want to fix it.
>
> I think I have the commit amended right, but to be sure I want to diff
> the old file and the new file.
>
>   $ git diff newfile HEAD^:oldfile
>   fatal: Path 'oldfile' exists, but not 'oldfile'.
>   Did you mean 'HEAD^:oldfile' aka 'HEAD^:./oldfile'?

You can feed two blob object names to "git diff", but I do not think there is any provision to compare a blob object and a file in the working tree.

Junio C Hamano· Jun 14, 2012, 23:18 UTC · re: Junio C Hamano · lore

Re: Confusing error message

Junio C Hamano <gitster@pobox.com> writes:
Show 15 quoted lines
> Phil Hord <phil.hord@gmail.com> writes:
>
>> I messed something up during a rebase in a moved file (probably
>> because I had rename detection turned off).  So now I want to fix it.
>>
>> I think I have the commit amended right, but to be sure I want to diff
>> the old file and the new file.
>>
>>   $ git diff newfile HEAD^:oldfile
>>   fatal: Path 'oldfile' exists, but not 'oldfile'.
>>   Did you mean 'HEAD^:oldfile' aka 'HEAD^:./oldfile'?
>
> You can feed two blob object names to "git diff", but I do not think
> there is any provision to compare a blob object and a file in the
> working tree.

Ah, actually we do have a bolted-on hack to allow you feeding a blob and a file, but I think you still need to follow the command line convention of subcommand name (=diff), any dashed options (e.g. "-R"), any object names (=HEAD^:oldfile) and then finally pathnames (e.g. "newfile").

Does "git diff -R HEAD^:oldfile newfile" work?

← back to recent threads