Za razumevanje načina funkcionisanja platforme GitHub potrebno je razumeti na koji način funkcioniše alat Git. Od njegovog nastanka 1991. godine Linux jezgro predstavlja prilično širok softverski projekat otvorenog koda. Tokom većine vremena održavanja Linux-ovog jezgra, softverske promene slate su kao zakrpe i arhivirani fajlovi. Projekat Linux jezgra je od 2002. godine počeo je da koristi vlasnički DVCS (eng. Distribution version control system), koji se zvao BitKeeper.
Partnerstvo između organizacije koja je radila na Linux jezgru i komercijalne kompanije koja je razvijala BitKeeper je
prekinuto 2005. godine, pa je status ovog alata kao besplatnog bio ukinut. Iz ovog razloga je Linux-ova zajednica programera
bila primorana da osmisli sopstveni alat, oslanjajući se na neke stvari koje su prethodno bili naučili prilikom korišćenja BitKeeper-a.
Ono što je bilo bitno podrazumevalo je:
• brzinu,
• jednostavan dizajn,
• snažnu podršku za nelinearni razvoj (na hiljade paralelnih grana),
• potpuno distribuiran koncept,
• mogućnost da se efikasno rukuje velikim projektima kao što je Linux jezgro (brzina i veličina podataka).
Od svog nastanka 2005. godine, Git je evoluirao u alat koji je bio jednostavan za upotrebu, ali je sadržao navedene kvalitete. Najznačanija razlika između programa Git i ostalih VCS (eng. Version control system) sistema (CVS, Subversion, Perforce, Bazaar itd.) je sam način na koji Git posmatra podatke. Većina drugih sistema čuva podatke kao listu promena fajlova. Ovi sistemi posmatraju podatke koje čuvaju kao skup fajlova i promena koje su napravljene nad njima tokom vremena (ovo se obično opisuje kao kontrola verzije bazirana na deltama). Program Git ne posmatra podatke na taj način, niti ih tako pamti. Umesto toga, program Git posmatra podatke kao da su skup snimaka (eng. snapshots) minijaturnog fajl sistema. Svaki put kada se izvrši komit (eng. Commit), ili kada se sačuva stanje novog projekta u Git repozitorijumu, on uzima sliku stanja fajlova u tom trenutku i pamti referencu na taj snimak. Da bi se održala efikasnost, ako se fajl nije promenio, Git ne čuva fajl ponovo, već samo vezu ka prethodnom identičnom fajlu koji je već ranije sačuvao. Program Git podatke posmatra kao tok snimaka. Zbog ovih razlika, Git skoro svaki aspekt kontrole verzije posmatra na drugačiji način u odnosu na većinu ostalih sistema. Git predstavlja minijaturni fajl sistem sa ugrađenim izuzetno moćnim alatima, a ne samo običan VCS sistem.