Git vs GitHub - Što je kontrola verzija i kako to funkcionira?

Je li vas ikad zbunilo kako funkcioniraju Git i GitHub? Ne uzrujavajte se - niste sami. Git i GitHub ponekad mogu biti nezgodni, ali do kraja ovog posta dobro ćete shvatiti to dvoje.

U početku je možda primamljivo vjerovati da su Git i GitHub ista stvar. Ali u stvarnosti nisu. Uistinu, Git je moguće koristiti bez GitHub-a! I na kraju, njih dvoje postoje u različite svrhe.

Ovaj će post započeti dobrim pregledom svrha Gita i GitHuba. Poslije ćemo naučiti o glavnim razlikama između ove dvije vitalne tehnologije.

Bez daljnjeg odlaganja, krenimo s Gitom.

Što je Git?

Git je Distribuirani sustav za kontrolu verzija (DVCS) koji se koristi za spremanje različitih verzija datoteke (ili skupa datoteka), tako da je bilo koju verziju moguće dohvatiti po volji.

Git također olakšava snimanje i usporedbu različitih verzija datoteka. To znači da se pojedinosti o tome što se promijenilo, tko je što promijenio ili tko je pokrenuo problem mogu pregledati bilo kada.

Ali ako je Git distribuirani sustav kontrole verzija, što točno znače ti pojmovi?

Što znači "distribuirano"?

Izraz "distribuirano" znači da kad god naredite Gitu da dijeli direktorij projekta, Git ne dijeli samo najnoviju verziju datoteke. Umjesto toga distribuira svaku verziju koju je snimila za taj projekt.

Ovaj "distribuirani" sustav u oštroj je suprotnosti s drugim sustavima za kontrolu verzija. Oni dijele samo onu pojedinačnu verziju koju je korisnik izričito odjavio iz središnje / lokalne baze podataka.

U redu, tako da "distribuirano" znači distribuirati sve - a ne samo nekoliko odabranih - verzija datoteka projekta koje je Git zabilježio. Ali što je zapravo sustav kontrole verzija?

Što je sustav za kontrolu verzija?

Sustav za kontrolu verzija (VCS) odnosi se na metodu koja se koristi za spremanje verzija datoteke za buduću referencu.

Intuitivno, mnogi ljudi već verzija kontrola njihovi projekti preimenovanjem različite verzije iste datoteke na različite načine kao što su blogScript.js, blogScript_v2.js, blogScript_v3.js, blogScript_final.js, blogScript_definite_final.js, i tako dalje. Ali ovaj je pristup podložan pogreškama i neučinkovit za timske projekte.

Također, praćenje onoga što se promijenilo, tko je to promijenio i zašto je promijenjeno dosadan je pothvat s ovim tradicionalnim pristupom. Ovo osvjetljava važnost pouzdanog i suradničkog sustava za upravljanje verzijama poput Gita.

Međutim, da biste najbolje iskoristili Git, neophodno je razumjeti kako Git obrađuje vaše datoteke.

Datoteke navodi u Gitu

U Gitu postoje tri primarna stanja (uvjeta) u kojima datoteka može biti: modificirano stanje , stupnjevano stanje ili uređeno stanje .

Izmijenjeno stanje

Datoteka u izmijenjenom stanju je revidirana - ali nepovezana (nezabilježena) datoteka.

Drugim riječima, datoteke u izmijenjenom stanju su datoteke koje ste vi izmijenili, ali Git nije izričito naložio da ih nadgleda.

Etapno stanje

Datoteke u stupnjevanom stanju su modificirane datoteke koje su odabrane - u trenutnom stanju (verzija) - i pripremaju se za spremanje (urezivanje) u .gitspremište tijekom sljedeće snimke snimanja.

Jednom kada se datoteka postavi na scenu, podrazumijeva da ste izričito ovlastili Git za nadgledanje verzije te datoteke.

Predana država

Datoteke u urezanom stanju su datoteke koje su uspješno spremljene u .gitspremište.

Dakle, predana datoteka je datoteka u koju ste zabilježili njezinu postupnu verziju u Git direktorij (mapu).

Napomena: Stanje datoteke određuje mjesto na koje će je Git smjestiti.

Lokacije datoteka

Tri su ključna mjesta na kojima se mogu nalaziti verzije datoteke dok se verzija kontrolira pomoću Gita: radni direktorij , scensko područje ili Git direktorij .

Radni direktorij

Radni direktorij je lokalna mapa za datoteke projekta. To znači da je svaka mapa stvorena bilo gdje u sustavu radni direktorij.

Bilješka:

  • Datoteke u modificiranom stanju nalaze se u radnom direktoriju.
  • Radni direktorij razlikuje se od .gitdirektorija. Odnosno, vi stvarate radni direktorij, dok Git stvara .gitdirektorij.
  • Pogledajte ovaj članak za usporedbu radi dodatnih razlika između dva spremišta.

Područje uprizorenja

Postupno područje - tehnički nazvano "indeks" na Git jeziku - datoteka je, koja se obično nalazi u .gitdirektoriju i koja pohranjuje podatke o datotekama koje slijede u nizu i koje će biti uređene u .gitdirektorij.

Bilješka:

  • Datoteke u režiranom stanju nalaze se u scenskom području.

Git direktorij

.gitImenik je mapa (koji se nazivaju „spremište”) koji Git stvara unutar radnog direktorija ste ga uputio pratiti.

Također, .gitmapa je mjesto u kojem Git pohranjuje baze podataka objekata i metapodatke datoteka koje ste mu zadali da nadgleda.

Bilješka:

  • .gitImenik je život Git - to je predmet kopirati kada klonirati repozitorij s drugog računala (ili iz online platforme kao što su GitHub).
  • Datoteke u urezanom stanju nalaze se u Git direktoriju.

Osnovni Git tijek rada

Rad sa sustavom za kontrolu verzija Git izgleda otprilike ovako:

Git osnovni dijagram tijeka rada
  1. Izmijenite datoteke u radnom direktoriju.

    Imajte na umu da svaka datoteka koju promijenite postaje datoteka u izmijenjenom stanju .

  2. Selektivno postavite datoteke koje želite predati u .gitdirektorij.

    Imajte na umu da svaka datoteka koju upišete (dodate) u scensko područje postaje datoteka u stupnjevanom stanju .

    Također, imajte na umu da inscenirane datoteke još nisu u .gitbazi podataka.

    Postupak znači da se podaci o insceniranoj datoteci uključuju u datoteku (koja se naziva "indeks") u .gitspremištu.

  3. Datoteke koje ste postavili u datoteku pohranite u .gitdirektorij. Odnosno, trajno spremite snimku stupnjevanih datoteka u .gitbazu podataka.

    Imajte na umu da svaka verzija datoteke koju predate u .gitdirektorij postaje datoteka u uređenom stanju .

Suština do sada

Duga i kratka dosadašnja rasprava je da je Git sjajan sustav kontrole verzija za kompetentno izradu verzija, upravljanje i distribuciju datoteka. Pogledajte ovaj jednostavan vodič da biste naučili kako učinkovito koristiti Git.

Ali, sačekajte sekundu, ako Git pomaže u učinkovitom upravljanju i distribuciji različitih verzija datoteke projekta, koja je svrha GitHub-a?

Demistificiran GitHub

GitHub je mrežna platforma na kojoj korisnici mogu ugostiti Git spremišta. Pomaže vam u jednostavnom dijeljenju i suradnji na projektima s bilo kime u bilo koje vrijeme.

GitHub također potiče šire sudjelovanje u projektima otvorenog koda pružajući siguran način uređivanja datoteka u spremištu drugog korisnika.

Da biste ugostili (ili podijelili) Git spremište na GitHubu, slijedite korake u nastavku:

Korak 1: Registrirajte se za GitHub račun

Prvi korak za započinjanje hostinga na GitHubu je stvaranje osobnog računa. Posjetite službenu stranicu za registraciju da biste se prijavili.

Korak 2: Stvorite udaljeno spremište u GitHubu

Nakon prijave za račun, stvorite dom (spremište) u GitHubu za Git spremište koje želite dijeliti.

Korak 3: Povežite Git direktorij projekta s udaljenim spremištem

Nakon što stvorite udaljeno spremište za svoj projekt, povežite .gitdirektorij projekta - koji se nalazi lokalno na vašem sustavu - s udaljenim spremištem na GitHubu.

Da biste se povezali s udaljenim spremištem, uđite u korijenski direktorij projekta koji želite dijeliti putem lokalnog terminala i pokrenite:

git remote add origin //github.com/yourusername/yourreponame.git

Bilješka:

  • Zamijenite yourusernamegornji kod svojim GitHub korisničkim imenom.

    Isto tako, zamijenite yourreponameimenom udaljenog spremišta s kojim se želite povezati.

  • Gornja naredba implicira da git treba dodati navedeni URL lokalnom projektu kao udaljenu referencu s kojom lokalni .gitdirektorij može komunicirati.
  • originOpcija u naredbu gore je zadani naziv (skraćeni naziv) Git daje na poslužitelj daljinski repozitorij.

    Odnosno, umjesto URL-a poslužitelja, Git koristi kratko ime origin.

  • Nije obavezno pridržavati se zadanog imena poslužitelja. Ako više volite neko drugo ime origin, jednostavno ga zamijenite originu git remote addgornjoj naredbi bilo kojim imenom koje želite.
  • Uvijek imajte na umu da kratko ime poslužitelja (na primjer,   origin) nije ništa posebno! Postoji samo lokalno - kako bi vam pomogao da lako uputite URL poslužitelja. Stoga ga promijenite u kratko ime na koje se lako možete pozvati.
  • Da biste preimenovali bilo koji postojeći udaljeni URL, upotrijebite git remote renamenaredbu ovako:
git remote rename theCurrentURLName yourNewURLName
  • Kad god klonirate (preuzmete) bilo koji udaljeni repo, Git automatski imenuje URL tog repoa origin. Međutim, git clone -o yourPreferredNamenaredbom možete odrediti drugo ime .
  • Da biste vidjeli točan URL pohranjen za nadimke poput origin, pokrenite git remote -vnaredbu.

Korak 4: Potvrdite vezu

Nakon što povežete svoj Git direktorij s udaljenim spremištem, provjerite je li veza uspješna pokretanjem git remote -vnaredbenog retka.

Nakon toga provjerite izlaz da biste potvrdili da je prikazani URL isti kao i udaljeni URL s kojim se namjeravate povezati.

Bilješka:

  • Pogledajte članak "Povezivanje sa SSH-om" ako se želite povezati pomoću URL-a SSH umjesto HTTPS URL-a.
  • Međutim, ako niste sigurni koji će udaljeni URL koristiti, pogledajte "Koji udaljeni URL trebam koristiti?" članak.
  • Želite li promijeniti svoj udaljeni URL? Promjena URL-a daljinskog upravljača izvrstan je vodič.

Korak 5: Gurnite lokalni Git repo na udaljeni repo

Nakon uspješnog povezivanja vašeg lokalnog direktorija s udaljenim spremištem, tada možete početi gurati (prenositi) vaš lokalni projekt uzvodno.

Kad god ste spremni podijeliti svoj projekt negdje drugdje, na bilo kojem udaljenom repo-u, jednostavno uputite Git da gurne sve vaše predaje, grane i datoteke iz vašeg lokalnog .gitdirektorija u udaljeno spremište.

Sintaksa koda koja se koristi za prijenos (guranje) lokalnog Git direktorija u udaljeno spremište je git push -u remoteName branchName.

Odnosno, za guranje vašeg lokalnog .gitdirektorija i pod pretpostavkom da je kratki naziv udaljenog URL-a "izvor", pokrenite:

git push -u origin master

Bilješka:

  • Gornja naredba implicira da bi git trebao gurnuti vašu lokalnu matičnu granu u udaljenu matičnu granu koja se nalazi na URL-u pod nazivom origin .
  • Tehnički, originopciju možete zamijeniti URL-om udaljenog spremišta. Zapamtite, originopcija je samo nadimak URL-a koji ste registrirali u svoj lokalni .gitdirektorij.
  • Oznaka -u(uzvodna / referentna zastavica praćenja) automatski povezuje .gitlokalnu granu direktorija s udaljenom granom. To vam omogućuje upotrebu git pullbez ikakvih argumenata.

Korak 6: Potvrdite prijenos

Na kraju, vratite se na svoju stranicu GitHub spremišta kako biste potvrdili da je Git uspješno gurnuo vaš lokalni Git direktorij u udaljeno spremište.

Bilješka:

  • Možda ćete trebati osvježiti stranicu udaljenog spremišta da bi se promjene odrazile.
  • GitHub također ima besplatnu dodatnu mogućnost za pretvaranje vašeg udaljenog spremišta u funkcionalno web mjesto. Pogledajte "kako" u nastavku.

Objavite svoje web mjesto s GitHub stranicama

Nakon što gurnete svoj projekt u svoje udaljeno spremište, lako ga možete objaviti na webu i to tako:

  1. Provjerite je li naziv glavne HTML datoteke vašeg projekta index.html.
  2. Na GitHubovoj web stranici otvorite spremište projekta koji želite objaviti i kliknite karticu postavki spremišta .
  3. Pomaknite se dolje do odjeljka GitHub stranice i promijenite izvornu granu iz none u master .
  4. Nakon toga prikazat će se obavijest "Vaša web lokacija je objavljena na //vaše-korisničkoime.github.io/vaša-github-repo-ime/ ".
  5. Sada svoj projekt možete pogledati i objaviti na navedenom URL-u.

Ovaj je odjeljak samo ogrebao površinu objavljivanja vašeg projekta s GitHubom. Da biste saznali više o GitHub stranicama, pogledajte ovu dokumentaciju "Rad s GitHub stranicama".

Ukratko

GitHub je mrežna platforma za hosting (ili dijeljenje) Git spremišta. Pomaže vam stvoriti put za jednostavnu suradnju na projektima s bilo kime, na bilo kojem mjestu i u bilo koje vrijeme.

Još uvijek sumnjate?

Jeste li još uvijek zbunjeni tankom linijom između Gita i GitHuba? Ne brinite - pokrila sam vas. Ispod je pet ključnih razlika između Gita i GitHuba.

Razlika 1: Git nasuprot GitHub - Primarna funkcija

Git je distribuirani sustav kontrole verzija koji bilježi različite verzije datoteke (ili skupa datoteka). Omogućuje korisnicima pristup, usporedbu, ažuriranje i distribuciju bilo koje snimljene verzije u bilo kojem trenutku.

Međutim, GitHub je uglavnom hosting platforma za hosting Git spremišta na mreži. Omogućuje korisnicima da svoje udaljeno spremište drže privatnim ili otvorenim za zajedničke napore.

Razlika 2: Git vs. GitHub - Operativna platforma

Korisnici instaliraju i upravljaju Gitom na svojim lokalnim računalima. To znači da je većina Gitovih operacija ostvariva bez interneta.

Međutim, GitHub je internetska usluga koja djeluje isključivo na mreži. To znači da vam je potreban internet za bilo što na GitHubu.

Razlika 3: Git vs. GitHub - Izumitelji

Linus Torvalds započeo je razvoj Gita u travnju 2005. godine.

Chris Wanstrath, PJ Hyett, Tom Preston-Werner i Scott Chacon osnovali su GitHub.com u veljači 2008.

Razlika 4: Git protiv GitHub - Održavači

U srpnju 2005. Linus Torvalds predao je Gitovo održavanje Juniou C. Hamanu - koji je od tada glavni održavatelj.

A Microsoft je kupio GitHub u listopadu 2018.

Razlika 5: Git protiv GitHub - natjecatelji

Popularne alternative Gitu su Mercurial, Team Foundation Version Control (TFVC), Perforce Helix Core, Apache Subversion i IBM Rational ClearCase.

GitHubovi najbliži konkurenti su GitLab, Bitbucket, SourceForge, Cloud Source Repositories i AWS CodeCommit.

Sve u svemu

Git i GitHub dva su različita entiteta koja vam pomažu u upravljanju i hostiranju datoteka. Drugim riječima, Git služi za kontrolu verzija datoteka, dok je GitHub platforma za hosting Git spremišta.

Korisni resurs

  • Kako koristiti Git - zapanjujući vodič sa sjajnim savjetima