July 1st, 2019 - 3 min read
If you're not a collaborator of a repository the only way to contribute is by forking the repo and creating pull requests to merge changes back.
That's OK but here I'd like to mention some commands that are useful for working in this situation.
If you're new to Git, I'd recommend getting the basics before reading this as I think it's a more advanced post.
For learning Git the following pages may be interesting:
After forking the original repository and cloning it to your computer it's useful to have the remote
upstream available so you can update
master if it changed remotely.
Use the command
git remote add upstream firstname.lastname@example.org:<username>/<upstream-reponame>.git
to add the repository that is the base of your fork as upstream.
git pull upstream master to pull every remote change on master. If nothing changed you'll get the prompt
Already up to date..
Sometimes you'd like to access a remote fork so you can have a look at a specific branch.
To enable this we have to add the fork by adding it as a remote by running the command
git remote add fork-username email@example.com:<username
You can name the remote however you like but I'm usually prefixing it with
fork- but just the username would be also OK.
Now as we're having the new remote we can run
git fetch fork-username.
This will load all details from the remote so we can check out the branches. The branches will be listed during fetch.
So if you'd like to work on a branch from the remote you can create a new local branch by running
git checkout -b local-branch fork-username/branch-name.
After this, the checked-out branch
local-branch will track the remote branch
fork-username/branch-name. Updating the branch will work with
git pull but
git push may not work because that depends on the access right to the fork.
If you'd like to push the new branch to your fork you can call
git push -u origin. That will change tracking to origin and you can now create a PR from this remote branch to the branch of the fork.
If you're doing many PR reviews it can become cumbersome to add every fork to your local repo.
You can also check out the changes with the PR number with the following command
git fetch upstream pull/<PR-no>/head:<new-branch>
If you like you can add the following alias to your global git configuration:
git config --global alias.checkout-pr '!sh -c "git fetch upstream pull/$1/head:$2 && git checkout $2" -'
And with the command
git checkout-pr it's possible to create a new branch based on a PR number - e.g.
git checkout-pr 1234 your-local-branch-name (here 1234 is just an example)
I think I'm extending this post if I'm having other useful commands to list here. If you think I've missed a command please let me know in the comments below.