Automatically track remote branch with git

git

Solution

It's not github, it's your local git, that does all this.

If you are creating `mybranch` locally with `git checkout` and it already exists as `origin/mybranch` in your local repository, you can simply `git checkout mybranch` and your local git will see that `origin/mybranch` exists and create local `mybranch` with `origin/mybranch` as its upstream.

On the other hand, if `origin/mybranch` does not exist yet and you're creating `mybranch` locally with `git checkout -b` or similar, you can't really set it to track the upstream branch that does not exist yet (you can configure it to track that branch but you'll get an occasional complaint that the upstream version is not there).

In this particular case, on the first push (the one that will create the branch upstream), you can use:

git push -u origin mybranch

which tells your local git to push `mybranch` to `origin` and, once that's done, set up `origin/mybranch` as the tracking-branch for `mybranch`.

Note that this is the same as running `git branch --set-upstream-to`: you do it once, after which it's set locally and you don't have to do it again. It's just more convenient since you can do it together with the `push` that creates the branch at `origin`. But you still have to remember to do it (once; you'll get reminded when you run `git push` without `-u origin mybranch`).

Problem

When I'm using a local branch `mybranch`, I'd like to be able to push to and pull from `origin mybranch` using just `git push` and `git pull`. As it is, I have to tediously write out `git push origin mybranch` and `git pull origin mybranch`. If I try to use just `git pull` for example, I get: ``` There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details git pull <remote> <branch> If you wish to set tracking information for this branch you can do so with: git branch --set-upstream-to=origin/<branch> mybranch ``` And if I enter `git branch --set-upstream-to=origin/mybranch mybranch`, then it works. But this is almost as tedious as the previous commands. Can I just have git do this as default behavior? I've seen similar questions asked and the answers tend to suggest that newer versions of git do this, but I'm using git version 2.1.3, which is fairly new, so it can't just be that.

Original source

Related problems