fatal: ambiguous argument 'origin': unknown revision or path not in the working tree

I used git diff origin often in the past.

In a different environment it does not work. I have no clue why.

  • arc diff including all changes in submodules
  • Why is old name of git remote sill in .git/refs/remotes?
  • How to display commit content in ruby
  • Permission denied error when using Github deploy keys
  • Authentication failed for Azure Git
  • git push origin DENIED by fallthru, hook declined: gitolite
  • user@host> git diff origin
    fatal: ambiguous argument 'origin': unknown revision or path 
           not in the working tree.
    Use '--' to separate paths from revisions, like this:
    'git <command> [<revision>...] -- [<file>...]'


    user@host> git status
    On branch master
    nothing to commit, working directory clean


    user@host> git remote -v
    origin  https://example.com/repos/djangotools (fetch)
    origin  https://example.com/repos/djangotools (push)


    user@host> git --version
    git version 2.7.4

    With “git version” git diff origin works.

    BTW I see the same err msg if I use “git diff origin/master”

    BTW2, I think the “/master” is redundant. The sane default is to compare the local branch with the same branch on the remote site.

  • Committed folders pushed to heroku don't make it
  • Git error: RPC failed; result=22, HTTP code = 404
  • How to prevent merge from falling back to normal merge strategy when a fast-forward merge is not possible?
  • Why aren't directories removed from others' local repositories?
  • What is best practice for keeping secrets out of a git repository?
  • git gc error: failed to run repack
  • One Solution collect form web for “fatal: ambiguous argument 'origin': unknown revision or path not in the working tree”

    The git diff command typically expects one or more commit hashes to generate your diff. You seem to be supplying the name of a remote.

    If you had a branch named origin, the commit hash at tip of the branch would have been used if you supplied origin to the diff command, but currently (with no corresponding branch) the command will produce the error you’re seeing. It may be the case that you were previously working with a branch named origin.

    An alternative, if you’re trying to view the difference between your local branch, and a branch on a remote would be something along the lines of:

    git diff origin/<branchname>

    git diff <branchname> origin/<branchname>

    Or other documented variants.

    Edit: Having read further, I realise I’m slightly wrong, git diff origin is shorthand for diffing against the head of the specified remote, so git diff origin = git diff origin/HEAD (compare local git branch with remote branch?, Why is "origin/HEAD" shown when running "git branch -r"?)

    It sounds like your origin does not have a HEAD, in my case this is because my remote is a bare repository that has never had a HEAD set.

    Running git branch -r will show you if origin/HEAD is set, and if so, which branch it points at (e.g. origin/HEAD -> origin/<branchname>).

    Git Baby is a git and github fan, let's start git clone.