Bird
Raised Fist0
Gitdevops~5 mins

Pushing new branches to remote in Git - Commands & Configuration

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
When you create a new branch in your local Git repository, it only exists on your computer. To share your work or back it up, you need to send this new branch to the remote repository where others can access it.
When you start working on a new feature and want to share it with your team.
When you fix a bug in a separate branch and want to push it to the remote for review.
When you want to back up your local branch to the remote repository.
When you want to create a pull request from your new branch on the remote.
When you switch to a new branch and want to make sure it exists on the remote.
Commands
This command creates a new branch named 'feature-login' locally so you can work on a new feature separately.
Terminal
git branch feature-login
Expected OutputExpected
No output (command runs silently)
Switches your working directory to the new 'feature-login' branch so you can start making changes there.
Terminal
git checkout feature-login
Expected OutputExpected
Switched to branch 'feature-login'
Pushes the new 'feature-login' branch to the remote repository named 'origin' and sets it to track the remote branch for easy future pushes and pulls.
Terminal
git push -u origin feature-login
Expected OutputExpected
Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 8 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 350 bytes | 350.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: remote: Create a pull request for 'feature-login' on GitHub by visiting: remote: https://github.com/example/repo/pull/new/feature-login remote: To https://github.com/example/repo.git * [new branch] feature-login -> feature-login Branch 'feature-login' set up to track remote branch 'feature-login' from 'origin'.
-u - Sets upstream tracking so future git push and pull commands work without specifying the branch.
Lists all remote branches to verify that 'feature-login' was successfully pushed to the remote repository.
Terminal
git branch -r
Expected OutputExpected
origin/HEAD -> origin/main origin/feature-login origin/main
-r - Shows remote branches only.
Key Concept

If you remember nothing else from this pattern, remember: use 'git push -u origin branch-name' to push a new branch and set it to track the remote branch for easy future updates.

Common Mistakes
Running 'git push origin feature-login' without the '-u' flag.
This pushes the branch but does not set upstream tracking, so future pushes require specifying the branch name every time.
Use 'git push -u origin feature-login' to push and set upstream tracking in one step.
Trying to push a branch that does not exist locally.
Git will return an error because it cannot find the branch to push.
Create and switch to the branch locally first using 'git branch branch-name' and 'git checkout branch-name' or 'git switch -c branch-name'.
Not switching to the new branch before pushing.
You might accidentally push the wrong branch or no branch at all.
Always switch to your new branch with 'git checkout branch-name' before pushing.
Summary
Create a new branch locally with 'git branch branch-name'.
Switch to the new branch using 'git checkout branch-name'.
Push the new branch to the remote and set upstream tracking with 'git push -u origin branch-name'.
Verify the remote branch exists with 'git branch -r'.

Practice

(1/5)
1. What is the correct command to push a new branch named feature1 to the remote repository?
easy
A. git push origin new feature1
B. git push origin feature1
C. git push new feature1
D. git push feature1 origin

Solution

  1. Step 1: Understand the git push syntax

    The correct syntax to push a branch is git push origin <branch-name>.
  2. Step 2: Apply the branch name

    Replace <branch-name> with feature1, resulting in git push origin feature1.
  3. Final Answer:

    git push origin feature1 -> Option B
  4. Quick Check:

    Push new branch = git push origin branch-name [OK]
Hint: Use 'git push origin branch-name' to push new branches [OK]
Common Mistakes:
  • Swapping origin and branch name order
  • Adding extra words like 'new'
  • Forgetting to specify the remote 'origin'
2. Which of the following commands correctly pushes a new branch dev to the remote named origin?
easy
A. git push origin/dev
B. git push origin:dev
C. git push dev origin
D. git push origin dev

Solution

  1. Step 1: Recall the correct push syntax

    The command to push a branch is git push origin <branch-name>.
  2. Step 2: Match the branch and remote

    Here, origin is the remote and dev is the branch, so git push origin dev is correct.
  3. Final Answer:

    git push origin dev -> Option D
  4. Quick Check:

    Push syntax = git push origin branch [OK]
Hint: Remember: remote first, then branch name [OK]
Common Mistakes:
  • Using colon instead of space between remote and branch
  • Swapping remote and branch order
  • Using slash notation incorrectly
3. Given the commands:
git checkout -b featureX
# make some changes
git add .
git commit -m "Add featureX"
git push origin featureX

What will be the result of the last command?
medium
A. The new branch featureX is created and pushed to the remote repository.
B. An error because the branch featureX does not exist locally.
C. Nothing happens because the branch is not checked out.
D. The changes are pushed but the branch is not created remotely.

Solution

  1. Step 1: Analyze branch creation and commit

    The command git checkout -b featureX creates and switches to the new branch featureX. Then changes are added and committed.
  2. Step 2: Understand the push effect

    git push origin featureX pushes the new branch featureX to the remote, creating it there.
  3. Final Answer:

    The new branch featureX is created and pushed to the remote repository. -> Option A
  4. Quick Check:

    Push new branch after commit = branch created remotely [OK]
Hint: Push after commit creates branch remotely [OK]
Common Mistakes:
  • Assuming branch must exist remotely before push
  • Forgetting to commit before pushing
  • Thinking push only updates existing branches
4. You run git push origin new-feature but get an error: error: src refspec new-feature does not match any. What is the most likely cause?
medium
A. You forgot to create or checkout the branch new-feature locally.
B. The remote repository origin does not exist.
C. You have uncommitted changes in your working directory.
D. You need to use git push -u origin new-feature instead.

Solution

  1. Step 1: Understand the error message

    The error means Git cannot find a local branch named new-feature to push.
  2. Step 2: Identify the cause

    This usually happens if the branch was never created or checked out locally before pushing.
  3. Final Answer:

    You forgot to create or checkout the branch new-feature locally. -> Option A
  4. Quick Check:

    Branch must exist locally before push [OK]
Hint: Create or checkout branch before pushing [OK]
Common Mistakes:
  • Assuming push creates branch locally
  • Ignoring error and retrying same command
  • Confusing remote existence with local branch
5. You have a local branch release with new commits. You want to push it to remote origin and set it to track the remote branch. Which command should you use?
hard
A. git push origin release
B. git push origin -u release
C. git push -u origin release
D. git push --set-upstream release origin

Solution

  1. Step 1: Understand tracking branches

    To set the local branch to track the remote branch, use the -u or --set-upstream option with git push.
  2. Step 2: Apply correct syntax

    The correct syntax is git push -u origin release which pushes and sets upstream tracking.
  3. Final Answer:

    git push -u origin release -> Option C
  4. Quick Check:

    Use -u to set upstream tracking [OK]
Hint: Use 'git push -u origin branch' to set tracking [OK]
Common Mistakes:
  • Placing -u after remote and branch incorrectly
  • Using --set-upstream with wrong argument order
  • Forgetting to set upstream and needing manual tracking