Skip to content

Git Workflow

Jim Cadden edited this page Jun 5, 2013 · 4 revisions

Each developer maintains their own fork of the sesa/master branch (aka. upstream). When individual development reaches a particular milestone, a push requested is issued the master branch. To ensure a clean fast-forward merge of the pull request, the developer should regularly "rebase" with the sesa/master branch and handle merge conflicts locally.

Rebase with Upstream

Update your fork with the latest commits of the sesa/master branch. Ideally, this should be done every time a pull request is accepted.

git checkout master # your local master  
git branch backup   # just to be safe  
git fetch upstream  # get latest state of the remote
git rebase upstream/master # merge in upstream master commits into your local master
git rebase --continue # continue rebase after handling a merge conflict
git push --force origin master:master # finally, a push to your github to keep it upto date

It if often the case that post-rebase your master will not be a fast-forward of your remote master (on github), and because of this it is recommended that you do a force push to your remote master.

Preparing a Pull Request

git push origin [your-branch]:forSESA # upload [your-branch] to your remote
# Log into Github and submit a pull request from the forSESA branch on your fork
git push origin :forSESA # Delete remote forSESA branch **after pull request has been accepted**

see: http://randyfay.com/node/91 (the comments are of value too) and http://stackoverflow.com/questions/457927/git-workflow-and-rebase-vs-merge-questions

Clone this wiki locally