When working with a centralized workflow the concepts are simple,
master represented the official history and is always deployable. With each now scope of work, aka feature, the developer is to create a new branch. For clarity, make sure to use descriptive names like
github-oauth for your branches.
#Protip: Although you may have a feature like 'user login and registration`, this is not considered appropriate to create a feature branch at this level, there is too much work to be done. It is better to break these large deliverables down to smaller bits of work that can be continuously integrated into the project. Remember, commit early and often.
Before you create a branch, be sure you have all the upstream changes from the
Before I pull, I make sure I am on the right branch. I have GIT Bash autocompletion installed, this tells me the branch in the prompt. Otherwise, the following command is good to know to list out the branches I have locally as well designate which branch I am currently on.
$ git branch
The checked out branch will have a
* before the name. If the return designates anything other then
master then switch to master
$ git checkout master
Once on master and ready to pull updates, I use the following:
$ git pull origin master
git pull command combines two other commands,
git fetch and
git merge. When doing a
fetch the resulting commits are stored as remote branch allowing you to review the changes before merging. Merging on the other hand can involve additional steps and flags in the command, but more on that later. For now, I'll stick with
Now that I am all up to date with the remote repo, I'll create a branch. For efficiency, I will use the following:
$ git checkout -b my-new-feature-branch
This command will create a new branch from
master as well checkout out that new branch at the same time. Doing a
git branch will list out the branches in my local repo and place a
* before the branch that is checked out.
master * my-new-feature-branch
No. There is a command that allows me to create a new branch from any other branch while having checked out yet another branch. WAT?!
$ git checkout -b transaction-fail-message master
In that example, say I was in branch
github-oauth and I needed to create a new branch and then checkout the new branch? By adding
master at the end of that command, Git will create a new branch from master and then move me (checkout) to that new branch.
This is a nice command, but make sure you understand what you are doing before you do this. Creating bad branches can cause a real headache when trying to merge back into master.