Bird
Raised Fist0
Gitdevops~20 mins

Fork and pull request workflow in Git - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
Fork and Pull Request Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
1:30remaining
What is the main purpose of a fork in GitHub workflow?

In the fork and pull request workflow, why do developers create a fork of a repository?

ATo create a personal copy of the repository where they can freely make changes without affecting the original project
BTo directly push changes to the original repository without review
CTo delete the original repository and replace it with their own version
DTo merge the original repository into their local machine automatically
Attempts:
2 left
💡 Hint

Think about why you might want your own space to work on a project without changing the original code immediately.

💻 Command Output
intermediate
2:00remaining
What is the output of this git command sequence?

Assume you have forked a repository and cloned your fork locally. You run these commands:

git remote -v
git fetch upstream
git merge upstream/main

What does the git remote -v command output show?

Git
git remote -v
ANo remotes configured
B
origin  https://github.com/originalowner/repo.git (fetch)
origin  https://github.com/originalowner/repo.git (push)
C
upstream  https://github.com/yourusername/repo.git (fetch)
upstream  https://github.com/yourusername/repo.git (push)
D
origin  https://github.com/yourusername/repo.git (fetch)
origin  https://github.com/yourusername/repo.git (push)
upstream  https://github.com/originalowner/repo.git (fetch)
upstream  https://github.com/originalowner/repo.git (push)
Attempts:
2 left
💡 Hint

Remember that origin points to your fork and upstream points to the original repository.

🔀 Workflow
advanced
2:30remaining
Correct order of steps to contribute using fork and pull request

Arrange these steps in the correct order to contribute a fix to a project using the fork and pull request workflow.

A3,2,4,1
B2,4,3,1
C2,3,4,1
D4,3,2,1
Attempts:
2 left
💡 Hint

Think about starting from GitHub, then working locally, then proposing changes.

Troubleshoot
advanced
2:00remaining
Why does this pull request show no changes?

You forked a repository, cloned it, made changes, committed, and pushed to your fork. But when you open a pull request, it shows no changes. What is the most likely cause?

AYou forgot to fork the repository before cloning
BYou pushed your changes to a different branch than the one used in the pull request
CYou merged the upstream branch into your fork before pushing
DYou deleted your fork after pushing changes
Attempts:
2 left
💡 Hint

Check if the branch you pushed matches the branch selected in the pull request.

Best Practice
expert
2:30remaining
What is the best practice to keep your fork updated with the original repository?

You have a fork of a repository and want to keep it updated with the latest changes from the original project. Which command sequence is best practice?

A
git fetch upstream
 git checkout main
 git merge upstream/main
 git push origin main
B
git checkout main
 git push origin main
 git fetch upstream
C
git clone upstream
 git push origin main
D
git pull origin main
 git push upstream main
Attempts:
2 left
💡 Hint

Think about fetching changes from the original repo, merging locally, then pushing to your fork.

Practice

(1/5)
1. What is the main purpose of forking a repository in the fork and pull request workflow?
easy
A. To clone the repository locally without any changes
B. To delete the original project
C. To create a personal copy of the project to work on independently
D. To merge changes directly into the original repository

Solution

  1. Step 1: Understand the concept of forking

    Forking creates a personal copy of the original project on your GitHub account, allowing you to work independently without affecting the original.
  2. Step 2: Identify the purpose in the workflow

    This personal copy lets you safely make changes and experiment before proposing them back to the original project.
  3. Final Answer:

    To create a personal copy of the project to work on independently -> Option C
  4. Quick Check:

    Fork = personal copy for safe work [OK]
Hint: Fork means copy project to your account for safe changes [OK]
Common Mistakes:
  • Confusing fork with clone
  • Thinking fork deletes original
  • Assuming fork merges changes automatically
2. Which command correctly pushes a new branch named feature1 to your forked repository?
easy
A. git push origin main
B. git push upstream feature1
C. git push fork feature1
D. git push origin feature1

Solution

  1. Step 1: Identify the remote name for your fork

    By default, your fork is set as the remote named origin. The original repository is usually upstream.
  2. Step 2: Use the correct push syntax

    To push a branch named feature1 to your fork, use git push origin feature1.
  3. Final Answer:

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

    Push branch to origin (your fork) = git push origin branch [OK]
Hint: Push new branch to origin, not upstream [OK]
Common Mistakes:
  • Using upstream instead of origin for push
  • Pushing main branch instead of feature branch
  • Using incorrect remote name like fork
3. After forking a repo and pushing a branch fix-bug to your fork, what is the next step to propose your changes to the original project?
medium
A. Directly push fix-bug branch to the original repository
B. Create a pull request from your fork's fix-bug branch to the original repo
C. Merge fix-bug branch locally without pushing
D. Delete your fork and clone the original repo again

Solution

  1. Step 1: Understand the pull request purpose

    A pull request asks the original project to review and merge your changes from your fork's branch.
  2. Step 2: Identify the correct action after pushing

    After pushing your branch to your fork, you create a pull request targeting the original repository's branch.
  3. Final Answer:

    Create a pull request from your fork's fix-bug branch to the original repo -> Option B
  4. Quick Check:

    Push branch then create pull request [OK]
Hint: Push branch, then open pull request to original repo [OK]
Common Mistakes:
  • Trying to push directly to original repo without permission
  • Merging locally without sharing changes
  • Deleting fork before proposing changes
4. You forked a repo and created a branch update-docs. You pushed it but forgot to sync your fork with the original repo first. What problem might occur when creating a pull request?
medium
A. Merge conflicts due to outdated fork base
B. Your pull request will be automatically merged
C. Your branch will be deleted automatically
D. No changes will be visible in the pull request

Solution

  1. Step 1: Understand syncing forks

    If your fork is behind the original repo, your branch may not include recent changes from the original.
  2. Step 2: Identify the pull request impact

    This can cause merge conflicts when the original repo tries to merge your changes because the base is outdated.
  3. Final Answer:

    Merge conflicts due to outdated fork base -> Option A
  4. Quick Check:

    Outdated fork causes merge conflicts [OK]
Hint: Always sync fork before starting new branch [OK]
Common Mistakes:
  • Assuming pull request merges automatically
  • Thinking branch deletes itself
  • Believing changes won't show without sync
5. You forked a project and created two branches: featureA and featureB. You pushed both branches to your fork. How do you create pull requests so the original repo can review and merge these features independently?
hard
A. Create separate pull requests for each branch targeting the original repo's main branch
B. Create one pull request combining both branches
C. Push both branches to upstream and wait for automatic merge
D. Merge featureB into featureA locally, then create a single pull request

Solution

  1. Step 1: Understand pull request scope

    Each pull request represents changes from one branch to the original repo, allowing independent review.
  2. Step 2: Apply to multiple branches

    To keep features separate, create one pull request per branch targeting the original repo's main branch.
  3. Final Answer:

    Create separate pull requests for each branch targeting the original repo's main branch -> Option A
  4. Quick Check:

    One pull request per branch for independent review [OK]
Hint: Make one pull request per branch for clear reviews [OK]
Common Mistakes:
  • Combining branches in one pull request
  • Pushing branches directly to upstream without PR
  • Merging branches locally before PR