Let’s say a repo named cool-stuff
is on github.
I have a fork of cool-stuff
and I have submitted a PR associated with my fork of cool-stuff
which is waiting to be merged.
Now, there is another independent fork of cool-stuff
,say, even-cooler-stuff
which works on new features to introduce to cool-stuff
. I would like to contribute to the even-cooler-stuff
repo but github won’t let me since I already have a fork of cool-stuff
.
Is there any way to do what I want like this or should I manually tell the author of even-cooler-stuff
the changes I want to do?
I blame GitHub for this. They invented this cool concept of a “fork” which is not technically a fork but only a stupid clone with another remote URL, and “pull request” which is basically a merge request with another name. It’s confusing and seem to create problems across teams /rant
The name “pull request” is actually more accurate, because you ask the upstream repository to
git pull
the changes from the downstream repo.Either one works imo, as the maintainer is asked to merge your changes into his repo.
It’s only more accurate because they actually put the fork in a “different” repo (which really is the same repo).
If you only have one repo like in Gitlab, merge request is more accurate.
https://docs.gitlab.com/ee/user/project/repository/forking_workflow.html
How is this different from GitHub?
Just to make sure there’s no misunderstanding: When I want to contribute to a project I’m not involved in, like inkscape, I’m not allowed to create a branch in their repo, so I have to fork it, which creates a copy of the repo, and sets the original repo as a remote.
Note that git is a distributed VCS that doesn’t distinguish between servers and clients. Forking and cloning are the same operation from a technical perspective, except when you
git clone
, the copy ends up on your local machine, and when you press the “fork” button, the copy is on a GitHub/GitLab server.