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.

  • Installing Git with non-root user account
  • Git - working on wrong branch - how to copy changes to existing topic branch
  • permission denied for certain git path
  • What's the svn revert equivalent in git?
  • How can I keep my blog git repository clean?
  • git submodule conflicts during rebase causes commit to disappear
  • 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.

  • How to use a git repository as a svn:external?
  • Git - Accidentally Overwrote Entire Commit History of Remote Repository
  • Split subdirectory from a Git repository and keep history of all files that are in the subdir _now_
  • Git subtree or Git Sub module for large resources?
  • Find the latest file(s) added to a git repository with name(s) matching a given wildcard pattern
  • What are the underlying git merge processes within the staging area?
  • 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.