A downstream repository (aka a βforkβ) maintainer commonly needs to stay current with upstream work (aka "original"). The case is development continues on the upstream repo while you work on your own origin fork. You want to fetch the upstream changes and apply them to your origin so you don't make conflicts.
The following steps allow you to achieve this on the command line in a local git repository.
This step defines the upstream repository of your fork. First is the syntax followed by an example.
git remote add <any_name_you_choose> [Upstream git URL]
git remote add upstream https://github.com/QubesOS/qubes-doc.git
git fetch <the_name_you_chose_earlier>
git fetch upstream
From your master branch, use the following merge command to merge the upstream master branch changes into your local source:
git checkout origin/master
git merge upstream/master
You then can either merge into the branch you were previously working on or start a new branch. Since starting a new branch is easy, this sample is merging the master branch into the develop branch.
git checkout origin/develop
git merge origin/master
- You fork from the
upstreamrepo usingcloneand then create a local copy on your computer. - You create a new branch
branch-1off of themasterbranch to do your work on. - You
pushthose commits frombranch-1to your ownoriginrepo. - You then create a pull request with the
upstreamrepo into themasterbranch. - Your pull request is
mergedinto themasterbranch and development continues on theupstreammasterbranch past your local andoriginrepo. - You then have to
fetchtheupstreamrepo before you continue your work to avoid conflicts - You then
pushtheupstreamchanges to youroriginrepo keepingoriginup-to-date withupstream.
| Access | Upstream | Origin | Local |
|---|---|---|---|
| Own | No | Yes | Yes |
| Read | Yes | Yes | Yes |
| Write | No | Yes | Yes |
| Remote | Yes | Yes | No |


π