Git branching: master vs. origin/master vs. remotes/origin/master
git, git-branch, git-remote
Solution
Take a clone of a remote repository and run `git branch -a` (to show all the branches git knows about). It will probably look something like this:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
Here, `master` is a branch in the local repository. `remotes/origin/master` is a branch named `master` on the remote named `origin`. You can refer to this as either `origin/master`, as in:
git diff origin/master..master
You can also refer to it as `remotes/origin/master`:
git diff remotes/origin/master..master
These are just two different ways of referring to the same thing (incidentally, both of these commands mean "show me the changes between the remote `master` branch and my `master` branch).
`remotes/origin/HEAD` is the `default branch` for the remote named `origin`. This lets you simply say `origin` instead of `origin/master`.
Problem
I think I'm on the right track to understand the basic concepts of git. I've already set up and cloned a remote repository. I also created a server side empty repository, and linked my local repository to it. My problem is that I don't understand the difference between: - origin/master vs. remotes/origin/master As far as I have understood, master is a local branch, and remotes/origin/master is a remote one. But what exactly is origin/master?