Git is a distributed version control system co-developed by Linus Torvalds that has speed and efficiency. Git does away with the idea of a central repository. In Git every user has a complete copy of the repository data stored locally which makes accessibility easy and fast even when the n/w is disconnected. This seems radical to the concept of Subversion or other VCS (Version Control Systems) we have been using where the central repo has complete history (which makes it slow and inefficient). Git users have to push and fetch changes with each other. If any repository is lost due to system failure only the changes which were unique to that repository are lost. Once that system comes up it does push/fetch to update/get the changes. Git is extermely fast for all operations (except push and fetch), perform a diff, view file history, commit changes, merge braches, obtain any other revision of file, switch branches etc.
GitHub uses Git as a core technology while extending its basic ideas into the direction of social networking and publication. Everything you do with your source code on GitHub becomes a Web resource, complete with its own URL. Github is a pay service but it also offers free package which are suitable for many open source projects. GitHub really comes together for most users when you start talking about the social features. Every user and project has a profile. For ex: Amit Kumar (its me) is my profile page and Ruby on Rails is project profile page. The project profile page keeps track of progress and participation. Both users and projects profile page also have public activity feeds which display activity on public projects such as commits, comments, forks, etc. Users can follow specific developers or projects to keep tabs on the activity.
Getting started with github is very easy. The screencasts and podcasts are wonderful resources. Getting git and github on windows is a little timetaking but with msysgit latest version has made life easy. Github provides a beautiful of the master code and all the forks.
It lets you see everyone else who’s cloned a particular repo, and what changes they have made. The big benefit is that this prevents you from re-inventing the wheel when you see that someone is already working on the same feature you’re trying to submit. Instead of going and doing your own thing, you fork off of them and work with them. You might even fork off of a grandchild of the original project just because it has some feature that you need. It’s like the long tail of open source..you no longer have to wait for the original author to implement your obscure changes. Just find what you want out there and work with it. The reciprocal benefit of this, of course, is that the original author can actually watch your changes as you’re making them. Instead of some disjointed patches, he sees your commits as you add them to your own line and can follow your progress visually. At some point, if the author likes your work he can merge your branch back into his code. And GitHub will show this on the network, so everyone else who is following the project can benefit. They’ve made it easy to notify the author that you have some good changes as well, with the pull request.
Github is growing everyday. Statistics say after being launched in Feb’ 08, in one year of being online it accumulated 46, 000 public repos.
Enjoy collaborating your project on github !!