Tonight, I Attended the NJ Dot Net User Group Meeting
Tonight, I attended the NJ Dot Net User Group meeting (http://www.njdotnet.org/). JP Toto presentated on Git and GitHub. Here is what I learned from JP.
Basically, this is the book to read (for free online, or buy it at Amazon).
There is this code called msysgit on code.google.com. Once it downloaded and installed, you have Git. Git is a "distributed source control" solution and allows you to create repositories of your data on your local machine. You can branch and merge your repository locally on your machine -- lightning fast speed. Then, you can "push" your repository to GitHub.
GitHub is free for open source projects (they call them "public repositories"). It costs money for a "private repository." There is also a solution for organizations giving for granular control of access privileges. Once a repository has been uploaded to GitHub, it is possible to do collaboration in a team environment. There is some really wild collaboration functionality built into GitHub.
So, another developer basically "pulls" the repository from GitHub to their local machine. There is no branching or merging on GitHub. That stuff happens locally, hence the idea of "distributed source control." Git utilizes "optimistic locking" in contrast to VSS's "pessimistic locking." That means anyone can work on a any file, but the only way yo can check it in is if you have the latest copy of that file from GitHub. If you don't have the latest copy (if someone else checked in the file before you did), then you have to "pull" that file and do a merge into your local repository. Then, you will have the latest copy and you can push up your changes. That is how "optimistic locking" works.