Question:
I have a repository called Generic
, which is a generic application. I have forked it into a repository called Acme
, which just builds upon the application stored Generic
repository and adds Acme Co branding to it.
If I make changes to the core functionality in Generic
, I want to update the Acme
repository with the latest changes I have made to the core functionality in Generic
. How would I do that?
As far as I can tell, I am essentially trying to merge the changes made in an upstream repository into the current fork.
If it means anything, I’m trying to do this because I have a generic application that I then build upon and brand for individual clients (like Acme
in this example). If there is a cleaner way of doing this, let me know.
Answer:
Issue the following command in your Acme
repo. It adds a new remote repository named upstream
that points to the Generic
repo.
1 2 |
git remote add upstream https://location/of/generic.git |
You can then merge any changes made to Generic
into the current branch in Acme
with the following command:
1 2 |
git pull upstream |
If you just want it to download the changes without automatically merging, use git fetch
instead of git pull
.
If you want to disable pushing to that repository, set the push URL to an invalid URL using something like
1 2 |
git config remote.upstream.pushurl "NEVER GONNA GIVE YOU UP" |
Git will now yell at you about not being able to find a repo if you try to push to upstream
(and sorry about the Rickroll, but it was the first random string that popped into my head).