It seems like the all cool guys are moving to GitHub, which uses, as the name implies, GIT as source control system.

What is Git

The main difference between Git and all the other main SCS like CVS, SVN, TFS is that Git is a "distributed version control system". This means that when you are working, you are doing against your own “clone” of the repository, you do check-ins locally, and then you push the changes up to the master version of the repository.

Given it's distributed nature, Git makes easier contributing to opensource projects, but it has development workflow a bit different from the other SCS.

I’m not going deeper into the details as there are tons of tutorials, including a series of screencasts: GitCasts.

How I started contributing to Ninject

To give you an example of what the “contributing” workflow is like, I’ll use the steps I followed to start contributing to Ninject (so all urls will be the Ninject’s ones)

  1. I forked enkari/ninject project
  2. Then I cloned (copied locally) my forked repository:
    git clone git@github.com:simonech/ninject.git
  3. This created the repository in folder named “ninject”, so, for the following commands to work, I moved to that folder:
    cd ninject
  4. then an important step: I bound my repository to the original one, so that I could keep it in sync with the changes Nate does to the main repository:
    git remote add upstream git://github.com/enkari/ninject.git
    Notice that here I used the clone url of the original repository (not mine)
  5. To get changes that were made to the original repository I’d do:
    git pull upstream master
  6. Since the last command copied it to my local repository, I’ve then to push it back to my online one:
    git push

But there is lot more

Here was just a very brief introduction on how to get started with Git. As I said at the beginning there are tons of tutorials available. I’d suggest the following:

A bit thanks goes to Ivan which helped me getting started with this in a long online session.

Hope this helps.

Technorati Tags: ,,