Recover a lost branch without losing your marbles

So, dilemma time. Your client sends you a list of changes. Somewhere in that list is the innocuous sounding, ‘style account section’. You leave it till last in the knowledge that the account section is already complete and possibly needs a few tweaks after the new button style you have introduced.

Holy moly, it’s completely untouched. Raw CMS without a hint of the painstaking markup you spent days putting together.

This is one of the dangers of working with multiple branches in git. I often work with a different branch for each section of the site, happy in the knowledge that they should have few conflicts when I merge them back into the main branch. But today i found out that I had forgotten to merge in a whole feature set, and as it wasn’t until I had already copied over the files from the cms default theme, that I realised, yes, yes I have done this already.

Like many things, when you take a few moments to consider them, and spend few more researching your options, there is usually an elegant way to proceed. In this case I thought I was in for painful and tedious rebase operation. Turns out that from my main working branch, I can actually merge in a directory from another branch using a less well know application of the git checkout command

:(main-branch)$ git checkout lost-branch path/to/lost/folder

Happy days!

Understanding the Git Rebase argument

The major hurdle I had in trying to understand the merge vs rebase argument was that it is not immediately apparent that the git pull command is actually a shorthand for two separate commands, ‘git fetch’ and ‘git merge’.

Continue Reading

Keeping local Magento extensions under version control

Use Case: You are developing local extensions for a Magento project and you wish to keep them in their own repository for use in later projects without disrupting your regular workflow.

Continue Reading

Git Bisecting

Git bisect is by far my favourite git tool. It’s not that I get to use it that often because it is only used for finding bugs and the like. Yet, when you need it it is extremely valuable.

Git bisect lets you do a binary search (a bisecting method) on the git commit history.

Continue Reading

Git Submodule Explained

Imagine you are working on a project and would like to include someone else’s work. Luckily, that work is already on Github. Submodule helps you with that.

Continue Reading

Behind the Hooks – Part 4: Issue Tracker

This is Part 4 out of 4 articles introducing apps and services behind GitHub’s service hooks.


The world’s easiest bug tracker
BugHerd is the world’s simplest bug tracker for the web. BugHerd allows you to visually track issues on your website. Using the GitHub integration you can update tasks directly from GitHub commit messages.

GitHub integration

Continue Reading

Behind the Hooks – Part 3: Continuos Integration

This is Part 3 out of 4 articles introducing apps and services behind GitHub’s service hooks.


Continuous integration server
Bamboo is a continuous integration server that automates the building and testing of your software. The github Bamboo service can be used to trigger builds after code has been pushed to your git repository.

GitHub integration

Continue Reading

Behind the Hooks – Part 2: Chat

This is Part 2 out of 4 articles introducing apps and services behind GitHub’s service hooks.


Team collaboration with real time chat
Campfire is like instant messaging, but designed exclusively for groups. Share text, files, and code in real time. Save transcripts so you don’t forget.

Continue Reading

Behind the Hooks – Part 1: Project Management

Back in 2008 GitHub introduced service hooks to enable external apps and services to be integrated with GitHub. They started with Campfire, IRC, Lighthouse and Twitter. Since then, over 150 apps and services joined.

Continue Reading

GitHub as Version Control for Designers

GitHub’s version control and the issue tracker are handy tools also for non technical projects.

Have you ever considered using GitHub for your design projects in order to manage versions of your artworks and to collaborate with your team?

Let’s check this out and see what benefits and constraints there are.

Continue Reading