With 3 long-running tasks concurrently on my plate, I finally got around to learning branching in git, and it’s easy!
Until this week, I had managed to get by without learning to branch. I have looked previously but got a little lost. I often temporarily stored my work using “git-stash” to work on multiple things at once, but this is very limiting.
So, Here we go. My basic workflow now look like this.
Create a new branch (based on the HEAD of your current branch), and automatically switch to it:
<code><a href="http://www.kernel.org/pub/software/scm/git/docs/git-checkout.html" title="git-checkout manual page">git checkout</a> -b my_branch</code>
Then you can work within this branch as you always would.
Work, work, work…
<code><a></a><a href="http://www.kernel.org/pub/software/scm/git/docs/git-add.html" title="git-add manual page">git add</a> files_i_have_edited.txt
<a href="http://www.kernel.org/pub/software/scm/git/docs/git-commit.html" title="git-commit manual page">git commit</a> -m 'My changes'</code>
Repeating this step until the task is complete. Then, to get the changes back into the master branch. Switch to it
<code><a href="http://www.kernel.org/pub/software/scm/git/docs/git-checkout.html" title="git-checkout manual page">git checkout</a> master</code>
And pull the changes from the branch
<code><a href="http://www.kernel.org/pub/software/scm/git/docs/git-pull.html" title="git-pull manual page">git pull</a> . my_branch</code>
Easy. No need to remember revision numbers where you branched, or which changed have already been merged. You can of course switch back to the branch and continue work with
<code><a href="http://www.kernel.org/pub/software/scm/git/docs/git-checkout.html" title="git-checkout manual page">git checkout</a> my_branch</code>
this “edit, commit, pull” cycle can continue until the task is complete. Then, once you’re satisfied you can delete the branch with
<code><a href="http://www.kernel.org/pub/software/scm/git/docs/git-branch.html" title="git-branch manual page">git branch</a> -d my_branch</code>
It’s still in the history of course, but no need to keep old branches around.
Hope that makes things clear to anyone else who was confused as I was by some of the overly complicated explanation of branching in git.