gitversion-controlbranchgit-branch

How to push a new branch non-existing on the remote server without --set-upstream?


The scenario is that I have no repos on the remote server, just an account. Then, I run locally the following commands, where x is the user name and y is the project name that only exists on my local system.

git init  
git remote add buckety https://x@bitbucket.org/x/y.git  
git add .  
git commit --message "Here we go..."  
git push buckety

Now I get the error urging me to set up the remote upstream. I can do that (either --set-upstream or -u) but according to my googlearching, it's been deprecated. (Actually weird that the suggestion in the console mentions it still.)

I want to do it the proper way and I've goolearched both --track and --set-upstream-to. However, there's no example for my particular scenario on Git as far I could see and the operations I've tested failed with errors.

How should I create the remote branch without retracting to using the deprecated option? I might want to create a tracking branch on remote so that:

  1. the local branch A corresponds to the remote branch A, but also
  2. the local branch A corresponds to the remote branch B.

Preferably, I'd like to configure it prior to the push but I'm not sure how. I can't use checkout because the branch doesn't exist yet. I can't use set-upstream-to for the same reason.


Solution

  • The right command is:

    git push -u origin master
    

    Or, for more recent (2021+) repositories:

    git push -u origin main
    

    Then the next git push will be a simple: git push.

    See "Why do I need to explicitly push a new branch?"

    Since Git 1.8, --set-upstream is called --set-upstream-to

    You can set up a remote tracking branch in advance with:

    git branch -u origin/master master
    # or
    git branch -u origin/main main
    

    (Then your first git push would have been a simple git push)