Što je GitHub? Verzioniranje koda za one koji nisu programeri
GitHub je web stranica koja čuva kod softverskih projekata zajedno s cijelom njihovom poviješću, pa možete vidjeti svaku promjenu, poništiti greške i raditi na istom projektu s drugim ljudima. Izgrađen je na Gitu, besplatnom softveru koji bilježi snimke datoteka projekta kroz vrijeme. Git je alat koji čuva povijest; GitHub je online dom u kojem se ta povijest dijeli, sigurnosno kopira i raspravlja.
Ako gradite s AI-jem, GitHub je uglavnom o dvije stvari: vlasništvu nad kopijom koda izvan alata u kojem ste ga napravili i predaji tog koda programeru u formatu koji on već koristi.
Zašto je važan kad gradite s AI-jem
AI alat za izradu aplikacija brzo piše i mijenja mnogo koda, a nije svaka promjena poboljšanje. Verzioniranje je način da to sigurno držite pod kontrolom.
- Poništavanje bez straha. Svaka spremljena promjena je snimka. Ako AI nešto pokvari, vratite se na zadnju dobru verziju.
- Vlasništvo. Kod u vašem GitHub računu ostaje vaš ako promijenite alat, prestanete plaćati jedan od njih ili želite drugo mišljenje.
- Rad s programerima. Gotovo svaki programer svakodnevno koristi Git. Repozitorij mu omogućuje da pregleda što je AI napisao, ispravi to i vrati izmjene.
- Objava drugdje. Mnoge platforme za hosting mogu objaviti aplikaciju izravno iz GitHub repozitorija.
Svakodnevna analogija: praćenje promjena i zajednički disk
Zamislite dokument s uključenim praćenjem promjena, pohranjen na zajedničkom disku.
- Git je praćenje promjena: svaka izmjena se bilježi, s tim tko ju je napravio, kada i zašto, i možete se vratiti na bilo koju verziju.
- GitHub je zajednički disk: dokument živi na internetu, drugi mogu dobiti kopiju, a postoji mjesto za komentare i odobrenja.
- Grana (branch) je kao spremanje kopije pod nazivom „nacrt — novi odjeljak s cijenama”, pa možete eksperimentirati, a da ne dirate verziju na koju se svi oslanjaju. Ako eksperiment uspije, spojite ga natrag.
Razlika u odnosu na dokument je opseg. Aplikacija ima stotine datoteka, a Git ih prati sve zajedno, pa je snimka stanje cijelog projekta u isti trenutak.
Git i GitHub pojmovi s kojima ćete se susresti
| Pojam | Jednostavno značenje |
|---|---|
| Repozitorij (repo) | Mapa projekta s cijelom poviješću |
| Commit | Spremljena snimka promjena s kratkom porukom koja ih opisuje |
| Grana (branch) | Zasebna linija rada, pa eksperimenti ne ometaju glavnu verziju |
| main | Uobičajeni naziv glavne grane, verzija koja ide u produkciju |
| Merge (spajanje) | Prijenos promjena iz jedne grane u drugu |
| Konflikt pri spajanju | Dvije promjene diraju iste retke, pa netko mora odabrati što zadržati |
| Clone (kloniranje) | Preuzimanje cijele kopije repozitorija, s poviješću |
| Push / pull | Slanje vaših commitova na GitHub / preuzimanje tuđih commitova |
| Pull request (PR) | GitHub stranica koja predlaže spajanje grane; ljudi pregledavaju i raspravljaju promjene |
| Fork | Vaša kopija tuđeg repozitorija na GitHubu |
| Issue | GitHub zadatak ili prijava greške vezana uz repozitorij |
.gitignore | Popis datoteka koje Git nikada ne smije bilježiti, kao što su .env tajne i preuzete ovisnosti |
| GitHub Actions | Automatizacija koja se izvodi na GitHubu, na primjer testovi na svakom pull requestu |
Dvije stvari vrijedi naglasiti. Prvo, Gitova povijest je po dizajnu trajna: ako je lozinka commitana i poslana na GitHub, brisanje u kasnijem commitu je ne uklanja iz povijesti. Drugo, commit je koristan samo koliko i njegova poruka. „Ispravi dvostruko knjiženje rezervacije kad dvoje ljudi rezerviraju istovremeno” pomaže kasnije; „ažuriranje” ne pomaže.
Radni primjer: predaja aplikacije izrađene s AI-jem freelanceru
Izradili ste portal za klijente s alatom za izradu aplikacija uz pomoć AI-ja. Radi, ali želite da freelance programer doda zahtjevnu integraciju s vašim računovodstvenim softverom.
- Povežite projekt s novim privatnim GitHub repozitorijem i pošaljite kod. Repozitorij sada sadrži kod i njegovu povijest.
- Provjerite što je u njemu. Otvorite repozitorij na GitHubu. Ne bi trebalo biti
.envdatoteke ni API ključeva u kodu. Tajne ostaju u postavkama vaše platforme i s programerom se dijele zasebno, ako uopće. Pogledajte varijable okruženja i tajne. - Pozovite freelancera kao suradnika samo na taj repozitorij.
- Radi na grani nazvanoj nešto poput
racunovodstvo-sinkronizacija, commita promjene tijekom rada i otvara pull request kad završi. - Vi pregledate pull request. I bez čitanja koda možete pročitati opis, provjeriti koje su datoteke promijenjene i postaviti pitanja u komentarima.
- Spojite kad ste zadovoljni, a zatim povucite (pull) promjene natrag u svoj alat za izradu, pa vi i AI nastavljate od nove verzije.
Usput možete vidjeti točno što se promijenilo i poništiti to ako treba. To je cijela vrijednost verzioniranja u jednom tijeku rada. Ako još razmišljate trebate li uopće angažirati programera, pogledajte angažirati programera ili graditi s AI-jem.
Česte greške i zablude
- „GitHub i Git su isto.” Git radi bez GitHuba; alternative poput GitLaba i Bitbucketa također hostaju Git repozitorije.
- „GitHub će pokrenuti moju aplikaciju.” GitHub čuva kod. Pokretanje za javnost je web hosting, zasebna usluga (iako neki hosting servisi mogu objavljivati direktno s GitHuba).
- Commitanje tajni. Najštetnija i najčešća greška. Za
.envdatoteke koristite.gitignore, a svaki ključ koji je ikad poslan treba zamijeniti novim. - Samo jedna grana i bez poruka. Dovoljno za solo eksperimente, ali dajte commitovima jasne poruke i koristite grane za sve rizično.
- Uređivanje na dva mjesta u isto vrijeme. Ako mijenjate kod na GitHubu i u AI alatu, a ne povlačite promjene između, stvarate konflikte. Odaberite jedno mjesto za uređivanje i sinkronizirajte prije promjene.
- Misliti da je privatni repozitorij sigurnosna kopija svega. Drži kod, a ne sadržaj vaše baze podataka ni prenesene datoteke. Za njih su potrebne zasebne sigurnosne kopije.
Što tražiti od AI alata za izradu
- „Dodaj
.gitignorekoji isključuje.env, mape s ovisnostima i izlaz builda.” - „Napiši README koji objašnjava kako instalirati, koje varijable okruženja su potrebne (samo nazivi) i kako pokrenuti aplikaciju.”
- „Dodaj
.env.examplesa svim nazivima varijabli i bez stvarnih vrijednosti.” - „Za svaku promjenu koristi jasne, opisne poruke commitova.”
Ova četiri zahtjeva daju repozitorij koji programer može preuzeti za nekoliko minuta. Za premještanje aplikacije na vlastite servere pogledajte kako izvesti i samostalno hostati aplikaciju izrađenu s AI-jem, a za učvršćivanje prije stvarnih korisnika kako od AI prototipa doći do produkcije.
GitHub i Mythex
Mythex na svakom planu čuva povijest za vas: nakon svakog uspješnog kruga rada agenta spremi checkpoint, a to je Git snimka na koju se možete vratiti. Na Pro planu možete povezati GitHub i slati ili povlačiti projekt prema vlastitom repozitoriju, ili preuzeti cijeli projekt kao arhivu; tajne i instalirane ovisnosti isključene su iz izvoza. GitHub ovdje služi za sinkronizaciju koda, a ne za prijavu u Mythex. Pogledajte GitHub, izvoz i uvoz u dokumentaciji i stranicu s cijenama za to što ulazi u svaki plan.
Pitanja
Koja je razlika između Gita i GitHuba?
Git je besplatan softver koji na bilo kojem računalu bilježi povijest datoteka projekta. GitHub je web stranica, u vlasništvu Microsofta, koja na internetu hosta Git repozitorije i dodaje alate za suradnju, kao što su pull requestovi, issues i automatizacija.
Trebam li GitHub da napravim aplikaciju s AI-jem?
Ne. Mnogi AI alati za izradu aplikacija pohranjuju povijest unutar samog proizvoda. GitHub postaje koristan kad želite vlastitu kopiju koda, kad želite raditi s programerom ili kad planirate aplikaciju hostati negdje drugdje.
Je li GitHub besplatan?
GitHub ima besplatan plan koji uključuje javne i privatne repozitorije, što je dovoljno za većinu pojedinaca i malih timova. Plaćeni planovi dodaju upravljanje timovima i dodatne značajke; aktualne pojedinosti provjerite na GitHubovoj stranici s cijenama.
Je li moj kod javan na GitHubu?
Samo ako repozitorij učinite javnim. Privatne repozitorije vide samo vi i ljudi koje pozovete. Ni u privatnom repozitoriju nikada ne spremajte lozinke ni API ključeve.