On Wed, Nov 22, 2017 at 06:19:23AM -0500, Robert P. J. Day wrote:
Show 21 quoted lines
> On Wed, 22 Nov 2017, Junio C Hamano wrote:
>
> > "Robert P. J. Day" <rpjday@crashcourse.ca> writes:
> >
> > > git repo with a file called "Gemfile", so i created a branch called
> > > "Gemfile", and when i ran:
> > >
> > > $ git checkout Gemfile
> > >
> > > git switched to the branch. so even with the ambiguity, git
> > > obviously has some sort of precedence order it checks. so what are
> > > the rules here?
> >
> > 31b83f36 ("Merge branch 'nd/checkout-disambiguation'", 2016-09-26)
> > should have made it clear that the "checkout" command has a
> > convenience special case.
>
> ok, then i'm still curious about git examples that actually fail due
> to an inability to disambiguate.
>
> rdayHere is an example with git diff
$ git init git-disambiguate
$ cd git-disambiguate
$ echo 1 >foo && git add foo && git commit -m foo
$ git branch foo
$ echo 2 >>foo && git add foo && git commit -m foo2
$ echo 3 >>foo $ git diff foo
fatal: ambiguous argument 'foo': both revision and filename
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
$ git diff HEAD foo
fatal: ambiguous argument 'foo': both revision and filename
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]' $ git diff HEAD -- foo
diff --git a/foo b/foo
index 1191247..01e79c3 100644
--- a/foo
+++ b/foo
@@ -1,2 +1,3 @@
1
2
+3 $ git diff HEAD foo --
diff --git a/foo b/foo
index 1191247..d00491f 100644
--- a/foo
+++ b/foo
@@ -1,2 +1 @@
1
-2