DEV Community


Posted on • Originally published at

Do you always need the '-u' in git push -u origin master?

You have seen this command in many tutorials. Maybe you use it everyday, or every time you push:

$ git push -u origin master
Enter fullscreen mode Exit fullscreen mode

This pushes changes in your local repository up to the master branch of the remote repository origin.

But do you need to do this every time you push?

The -u in this command is a short-hand for --set-upstream. Using this flag you are basically telling git to automatically link your local master to the remote master. Therefore you only need to do this once. After that you can just write git pull and git push on master.

Just remember to do this the first time you create a branch locally and are ready to push it to the remote:

# Create a branch and switch to it
$ git checkout -b bugFix

# Work on bugFix and then commit the changes
$ git add .
$ git commit -m "Put some print statements. Found the bug."

# Since this is the first time you push to origin
$ git push -u origin bugFix
Enter fullscreen mode Exit fullscreen mode

This creates a branch called bugFix on your remote and sets your local bugFix branch to track it. So from now on, when you switch to that branch locally, you can just pull and push without any further argument or flag.

Pro tip:

If you want to see how your local branches are connected to remote branches, take a look at your repository's config file. The -u flag sets the merge property of the branch:

./my_repo$ cat .git/config
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url =<your-user-name>/my_repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "bugFix"]
    remote = origin
    merge = refs/heads/bugFix
Enter fullscreen mode Exit fullscreen mode


Top comments (0)