Any version more recent than that should include it. set-upstream-to was introduced in 2012 in the 1.7.12-1.7.13 timeframe. It's related to git branch -set-upstream-to, but not the same. And now you can use git branch -set-upstream-to, but it might be nice if git push could do that automatically-and that's the git push -set-upstream, aka -u, option. Now that they do have a newbranch, your Git creates your origin/newbranch to remember their newbranch. Soon, however, you git push your local newbranch to their Git, so that their Git creates newbranch in their repository. But if you try, it fails: $ git branch -set-upstream-to=origin/newbranchĮrror: the requested upstream branch 'origin/newbranch' does not existīecause origin/newbranch does not exist yet, because the other git at origin does not have a branch named newbranch. That is, suppose you have created a branch newbranch: $ git checkout -b newbranchĪnd want to set its upstream to origin/newbranch. It means that if the push succeeds, your local Git should set, as the upstream of a branch reference supplied as your source, the remote-tracking branch corresponding to the destination branch you got the other Git to set, which in many cases, your own Git has just now created in your repository because their Git has also just created their branch. The git push command has only -u aka -set-upstream, which takes no argument. Series Navigation Getting geeky with Git #2.The git branch command has both -set-upstream and -set-upstream-to, with the former deprecated in favor of the latter for the reason already given in Nick's answer. It might also help when dealing with some issues. While knowing all of the above might not be crucial to using Git in your everyday work, it gives you a broader perspective. Its remote equivalent now acts as an upstream to our local branch. If our local branch tracks a remote branch through a remote-tracking branch, we call it a tracking branch. They act as pointers to where the remote master is. To connect to their remote counterparts, we locally have remote-tracking branch es, for example, origin/master. Since Git is distributed, we maintain local copies of branches. The origin keyword is an alias to the default remote connected to our local repository. Remote is a repository other than our local copy. The terminology surrounding branches and remotes in Git is vast and can be quite confusing. Git branch –set-upstream-to=origin/ maste Summary If you wish to set tracking information for this branch you can do so with: Please specify which branch you want to merge with. There is no tracking information for the current branch. Not specifying the branch by running just git pull origin means that we want to merge the upstream branch into our current branch.Īs you can see above, if we want to omit the arguments of git pull we need to set up an upstream branch. When we run git pull origin master we explicitly say that we want to merge the remote branch master into our current branch. To figure out the associated remote, git needs an upstream branch. If we don’t specify it by running just git pull, the default is the remote associated with the branch we are currently on. When running git pull origin, we indicate that we want to fetch from the origin. When we run git pull, there are a few things Git needs to know. When we run git pull , we fetch the current state of the remote and merge it to our local repository. How setting an upstream branch affects git pull Having upstream branches can be useful when doing other operations such as git pull. Being as precise as possible when pushing changes might be a good thing, though. We could even run git push without the remote, and Git assumes that we want the remote of the current branch. It connects our local master through origin/master to the branch in our remote repository, making it an upstream branch.Īs you can see, setting up an upstream branch gives us a possibility to be a bit less explicit. The most straightforward approach to the above issue is to run git push - u origin master instead. We also check out what is an upstream branch and how we can benefit from defining it. In this article, we look into what is a remote and what the origin keyword means. The most popular one is Git, and therefore it is worth looking into it a bit more. Version control systems (VCS) are one of the essential tools of every programmer. Keeping our Git history clean with fixup commits Improving our debugging flow with Bisect and Worktree This entry is part 1 of 11 in the Getting geeky with Git