Hello Fellow CodeNewbies π,
I am collaborating with a friend to create a project in React.
I created a repo for the project, and my teammate forked this repo.
Background
Recently, I created a branch to make some changes. Then I pushed this branch to the remote repo and created a pull request.
I asked my teammate to fetch this branch and test things out locally before merging it into the main branch.
After making sure that we didn't have anything to fetch and merge from the remote repo, and after several attempts, we still couldn't fetch the branch from the remote repo.
We mostly got the error of fatal: couldn't find remote ref <branch-name>.
Then we tried to step back and figure things out.
From my teammate's side, my repo is the upstream repo. He then forked this repo, which automatically becomes his origin repo.
For him to fetch a branch β that hasn't been merged to main β from the upstream repo, his origin repo should have access to the upstream.
So, we need to set the origin repo to point to the upstream repo.
π Important Side Notes
My teammate and I started this project with one of us creating a repo and the other forking the repo.
But for collaborating, we could do it differently, which I will cover in another blog post.
We found out later that what we're doing is an open-source workflow, where we maintain and contribute to a repo. In this case, I am the maintainer, and my teammate is the contributor.
However, we learned a lot from this accident.
So, I hope you can gain something too from our journey! π
Fetch a branch from the upstream repo
-
Check our current configured remote repo for our fork.
git remote -vIf we haven't configured a remote that points to the
upstreamrepo, we will get:
origin <fork-repo-url> (fetch) origin <fork-repo-url> (push) -
Add a new remote
upstreamrepo that will be synced with the
originrepo.
git remote add upstream <original-repo-url>original-repo-urlis the HTTPS URL of the repo that we fork.We can copy this link by going to the repo on GitHub, clicking the green button with "Code" written on it, and copying the HTTPS link.
-
Check if the new
upstreamhas now been added.
git remote -vNow we should get:
origin <fork-repo-url> (fetch) origin <fork-repo-url> (push) upstream <original-repo-url> (fetch) upstream <original-repo-url> (push) -
Fetch data from the
upstream.
git fetch upstreamYou will see in the command line that we have fetched the branches on the
upstreamrepo, including the target branch. -
Navigate to the branch.
git checkout branch-nameRunning this command will automatically create a branch with the same name in our local repo.
Now you have the branch on your local repo, and you can test it out locally! π
Thank you for reading!
Last but not least, you can find me on Twitter. Let's connect! π
Top comments (3)
Hi Ayu. Nice article, this will help a lot of people especially when they are trying to contribute to open source.
My question would be, since you are collaborating, why do you both not work on the same repo (as in the collab lab) but instead forking it?
That's good question, Julia!
So, we started off wrong tbh.
We didn't realize that we can add collaborator to the repo (as in The Collab Lab) π
However, we learn many things new! And one of them is to contribute to and to maintain repo as in open source, although we treat it as collaboration π
Replace branch-name with the name of the branch you want to fetch. Running this command will automatically Drift Hunters create a new branch with the same name in your local repository, allowing you to test it out locally.