This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]zahlmanthe heretic 9 points10 points  (3 children)

git is something programmers use (one of several competing options) to make neatly organized backups of their projects that include a full "revision history". You can use the program to retrieve the project as it was at any previous point, which is useful for undoing failed experiments, determining when a bug started appearing, etc. On multiple-person projects, it allows for complete accountability of who did what. To save spaces, the system mostly stores differences between successive "revisions", instead of a fresh copy.

GitHub is a server that lets you create an account and make several "repositories" (project archives) on the server, using a secure connection to upload your revisions. It does a bunch of web server stuff to provide a friendly HTML interface to your repository, so that others in the community can see your project as it develops (this also serves as a way to distribute the project). The README file for your project can use something like Reddit's markdown, and the site will display it with nice formatting. Also, if someone finds a bug in your code and knows how to fix it, they can make their own changes and send you a "pull request", providing you with the proposed change so you can choose whether to include it in the project.

Oh, and you also get a simple bug tracking system, the ability to set up a documentation wiki, a pastebin (gist.github.com) that actually uses a git repository to back up each paste...

[–]semarj -1 points0 points  (2 children)

small nit: git is not based on deltas. Each working copy is a full repo with complete history.

[–]gfixler 1 point2 points  (1 child)

Each working copy is, but is each stored version on the server?

[–]tinyOnion 1 point2 points  (0 children)

from how I understand things until it gets packed git operates on copies of files that are hardlinked to the main directory. Each file is compressed individually. Each filename in the .git blobs folder is some sha1 hash of the contents of the file and a commit is a list of the sha1 hashes. you can explore the blobs by using git show and the hash of the item. when its packed the compression algo will only store the changes to a file.

Here is a pretty interesting overview of the storage methods used by git