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.

  • Make github use .gitattributes “binary” attribute
  • Git describe fails to return most recent annotated tag
  • How do you customize the color of the diff header in git diff?
  • Labelling commits to group them in Git
  • How to detect if a git clone failed in a bash script
  • tortoise git clone remote branch
  • 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>...]'
    

    Status:

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

    Remotes:

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

    Version:

    user@host> git --version
    git version 2.7.4
    

    With “git version 1.8.1.4” 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.

  • Different configs in each git branch
  • git merge --no-commit vs git cherry-pick --no-commit
  • Project Organization using Maven + Git
  • Best Practices Using Git with Visual Studio?
  • Git: can I check out a commit without HEAD detached?
  • Visual Studio Code cannot detect installed git
  • 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.