For many of the CodeYourFuture homework assignments, you will need to make a Pull Request to a GitHub repository. By default GitHub repos prevent most people from pushing to them. This is ensure that repo owners have control over the project.
This doesn't mean you will never be able to make changes to the repo! On GitHub you do this by creating a "fork". A fork is an exact copy of the original repo but copied to your own GitHub account. This means that now you can push to it!
This is why you will need to create a fork when submitting a PR for your homework.
What is a remote
Git has a concept of a "remote". These are other git repositories that can be connected to over the internet. You can push or pull code changes from them. Remotes have a name and a URL. Most of the remotes that you will use at CYF are hosted on GitHub, so have a github.com URL.
When you clone a repo from GitHub, the default remote is named
and the URL is set to that of the GitHub repo.
You can view the remotes you have set up with:
git remote -v
How to fork a GitHub repo
Firstly you need to click the "Fork" button:
Then you should be brought to your new fork (notice how the repo title changes):
Now you can clone from your fork by copying the URL here:
The command to clone is:
git clone URL_YOU_JUST_COPIED
Adding a Remote
Follow these instructions if you are getting an permission error
when pushing your changes.
If you have cloned the original repo before forking,
you'll need to follow these instructions.
You can check this by running
git remote -v.
If the output looks something like:
origin firstname.lastname@example.org:CodeYourFuture/css-skin.git (fetch) origin email@example.com:CodeYourFuture/css-skin.git (push)
Then you have cloned before forking.
The key is that the
origin remote is pointing to a CodeYourFuture URL.
Don't worry, we can fix it!
The first step is to fork the original repo. Follow the first 2 steps from forking instructions above.
Now, instead of cloning the fork (you have already cloned), you need to add it as a remote.
git remote add fork URL_YOU_COPIED_FROM_FORK
This will add a new remote called
fork that points to your new fork.
To check this, run
git remote -v again.
You should see both the
Now that you have your
fork remote you can push to it
(instead of the
origin remote, which will error) by running:
git push fork
You'll need to remember to add the
fork every time you push.
Creating a PR
So you've done your homework. You've committed your changes and are ready to make a PR. Congrats! 🎉🎉🎉
You will need to push to your fork.
If you forked and then cloned
(as in the how to fork instructions)
then you just need to run
If you added a remote to your fork,
then you will need to run
git push fork.
Next you need to go the original repo in your browser (probably starting with https://github.com/CodeYourFuture). Next click the Pull Requests tab:
Then click the New pull request button:
Then click the "compare across forks" link:
Then click the "head fork" dropdown button:
Then find your fork in the list and click it:
Then click the Create pull request button:
Almost there! Now fill out the PR form. Give it a sensible title and an (optional) description:
And finally click the Create pull request button at the bottom of the form:
That's it! You created your PR!