how to manage project variations as well as development flow with Git?

I have a rails website that is about to be sold to different clients with small variations for each client. In the mean while I’ll be definitely developing fix and/or modifying the “common” parts of the project. So how would be the preferred way to manage this developing process with Git?
Initially I though that “Branching” would be the way to go… but 1 min later I realized that anything committed on a single branch wouldn’t available on other branches and this way to fix something in the “common code” would result in multiple commit to each branch.
In the end I though that “Tags” might solve the problem since it’s a way to track variations on a single branch.
I couldn’t think of any other options. Maybe someone can help.

One Solution collect form web for “how to manage project variations as well as development flow with Git?”

You should aim to modularise your code so you end up with a common core and a collection of specialisations. Ideally the core will contain the majority of the code and the specialisations will be minimal.

I would suggest you have either:

  • one repository for your common code
  • a separate repository per customer

Or:

  • one repository for your common code
  • one repository for your specialisations with separate branches per customer

Your deployment would then need to contain your common code (perhaps these are your binaries) and the specialisations (perhaps your configuration) specific to the customer.

Git Baby is a git and github fan, let's start git clone.