Git Workflows
This article describes my personal git
Workflow.
Start working on a Topic Branch
This when we are implementing a new feature. Assumes that you have a working git repo.
git checkout -b "topic" dev
git push -u origin "topic"
From a different computer, you may want to work on an existing work branch.
git fetch origin
git checkout --track origin/topic
Keep Topic Branch current
While developing a topic we may want to bring any changes done to the dev/integration test...
git checkout topic
git merge dev
Merge a Topic Branch
Once all the development and testing for a topic is done...
git checkout dev
git pull
# switch to the dev (integration) branch
git merge --no-ff topic
# The --no-ff makes this a single commit.
# ... Update any changelogs and commit them...
git push
Start working on a HotFix
This when we want to fix a prod release bug. Assumes that you have a working git repo.
git checkout -b "topic" master
git push -u origin "topic"
From a different computer, you may want to work on an existing work branch.
git fetch origin
git checkout --track origin/topic
Keep HotFix Branch current
While developing a topic we may want to bring any changes done to the dev/integration test...
git checkout topic
git merge master
Merge a HotFix Branch
Once all the development and testing for a topic is done...
git checkout master
git pull
# switch to the dev (integration) branch
git merge --no-ff topic</p>
# The --no-ff makes this a single comit.
# ... update any changelogs and commit them ...
git push
git checkout dev
# We also want to add changes to dev...
git merge --no-ff topic
.. On another system....
git remote prune origin
git branch --delete topic
Finish working on a HotFix or Topic Branch
If really done, or if you want to abort this...
git branch -d topic
git push origin dev|master
# Use dev or master depending on being a topic branch or a hot
# fix branch respectively
git push origin :topic
# Delete the remote branch... Or ...
git push origin --delete topic
Create a New Release
We are ready for a new release...
git checkout dev
git push
git pull
# Make sure that dev is up-to-date in both directions...
git checkout master
git push ; git pull
# Make sure that master is up-to-date
git merge --no-ff dev
# ... fix version number ...
git commit -a -m"preparing release X.Y"
git tag -a X.Yrel -m"Release X.Y"
git push
git checkout dev
git merge --no-ff master
# ... bump version number ...
git commit -a -m"Bump version to X.Y+1"
git tag -a X.Y+1pre -m"New dev cycle for X.Y+1"
git push origin dev
git push origin --tags
Setup New Project
For setting up a new project.
mkdir project
cd project
# ... create files ...
git init
git add .
git commit -m"Initial commit"
git tag -a "0.0initial" -m "Initial commit"
git checkout -b "dev" "master"
git tag -a "0.0pre" -m "Development branch"
git push origin --tags
This sets up a local repo with two branches and some descriptive tags. The "master" branch for release code and the "dev" branch for development and integration. We now need to configure it on the remote repository.
git checkout master
git remote add origin "Remote repo URL"
git push origin master
git checkout dev
git push -u origin dev
git push origin --tags
Setup to work on an existing project
Setup clone:
git clone "Remote repo URL"
git push origin master