# Confusing error message

3 messages from 2012-06-14 to 2012-06-14. Participants: Phil Hord, Junio C Hamano.
Thread: https://gitlist.dev/t/30812

## Phil Hord, 2012-06-14 22:54

Subject: Confusing error message
Message-ID: <CABURp0qE+qJjyrhRFb8-gWucM0=3TpYwDBsnbCPrZNVe3QGQBQ@mail.gmail.com>
URL: https://gitlist.dev/e/CABURp0qE%2BqJjyrhRFb8-gWucM0%3D3TpYwDBsnbCPrZNVe3QGQBQ%40mail.gmail.com

```
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, 2012-06-14 23:14

Subject: Re: Confusing error message
Message-ID: <7v395xebal.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7v395xebal.fsf%40alter.siamese.dyndns.org
In-Reply-To: <CABURp0qE+qJjyrhRFb8-gWucM0=3TpYwDBsnbCPrZNVe3QGQBQ@mail.gmail.com>

```
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.

```

## Junio C Hamano, 2012-06-14 23:18

Subject: Re: Confusing error message
Message-ID: <7vy5npcwk3.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vy5npcwk3.fsf%40alter.siamese.dyndns.org
In-Reply-To: <7v395xebal.fsf@alter.siamese.dyndns.org>

```
Junio C Hamano <gitster@pobox.com> writes:

> 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?

```
