This document briefly outlines the git workflow used to make additions, changes, and deletions of content on this repo. In general we used a three step process:
- Fork
- Branch
- Pull Request
The subsequent sections will outline these steps and discuss how to synchronize your fork with the upstream repo.
Begin by creating a fork of the repository (official GitHub docs on forking). This is done by clicking the fork button in the upper right hand corner while on the GitHub web ui. This will effectively create a copy of the repo under your user account.
Next, navigate to your fork and create a local clone (copy) of the repo. This is done on the command line.
git clone https://github.com/<your-username>/evaluation_tools
cd evaluation_tools
Next, if you haven't already, you'll need to configure git
to know who you are. You
can either do this globally, meaning you do it once and these settings will be
default for all other git
repos in the future, or locally meaning just change the
settings for this repo. Here we will do it globally.
git config --global user.name "<First Name> <Last Name>"
git config --global user.email "<your>@<email>"
Lastly, it will be helpful in the future to pull commits from the upstream
repository, in this case NOAA-OWP/evaluation_tools
. Right now the local cloned
repository only knows about the remote fork under your username (you can check this
using git remote --verbose
).
Add an upstream remote that points to NOAA-OWP/evaluation_tools
using:
git remote add upstream [email protected]:NOAA-OWP/evaluation_tools.git
Now that a local clone of your fork has been made, to commit changes, you'll want to open a feature branch. To do so run:
git checkout -b <feature-branch-name>
It's important to note that when creating a branch, the starting point of the created branch is the last commit from the branch you were last on. Diagrammatically:
/ <feature-branch-name> commit 3
main | commit 3
| commit 2
| commit 1
Now that the feature branch has been created, its safe to make changes. Do so using:
git add <some-file-name>
git commit -m "<a human readable and meaningful commit message>"
# Push changes up to origin remote (aka your fork)
git push origin <feature-branch-name>
Now that you've made changes to the feature branch and pushed them to your origin
remote (fork), its time to open a PR to start the process of adding your changes to
the official NOAA-OWP/evaluation_tools
repo.
This step is done on the GitHub site, so open a browser and navigate to your fork.
Next, select Pull requests from the ribbon, then New pull request. You should be
greeted with a dialog asking to compare changes. Simply this is asking, what changes
on your fork do you want to compare with the official NOAA-OWP/evaluation_tools
. On
the right side, click the dropdown menu labeled compare and find the feature branch
you pushed up to the origin. You should see a new dialog appear that looks similar to
a GitHub issue form. Fill out the information and click open pull request.
Inevitably there will come a time when the NOAA-OWP/evaluation_tools
main
branch
is ahead of your forks main branch. That's okay, but this means that you wont have
the latest work on your fork. This is important because if you are to start new work,
you should always base it off the newest work on main.
To update your fork, from the command line do the following:
# switch to main branch on your fork
git checkout main # if you have any unstaged changes you will need to deal with those first. See `git stash`
# Fetch latest data from upstream remote
git fetch upstream
# Put those changes on top of your local main's using a rebase
git rebase upstream/main
If you have local branches that are no longer needed (list all branches using git branch
) once they have made their way into the remote tracked development branch,
you can remove them with git branch -D <branch>
.