Šta je GitHub? Kontrola verzija za one koji nisu programeri
GitHub je veb sajt na kojem se čuva kod softverskih projekata zajedno sa celom njihovom istorijom, pa možete da vidite svaku izmenu, poništite greške i radite na istom projektu sa drugim ljudima. Zasnovan je na Git-u, besplatnom softveru koji beleži snimke fajlova projekta tokom vremena. Git je alat koji čuva istoriju; GitHub je onlajn mesto na kojem se ta istorija deli, čuva u rezervnoj kopiji i o njoj raspravlja.
Ako pravite aplikacije uz AI, GitHub služi uglavnom za dve stvari: posedovanje kopije koda van alata u kojem ste ga napravili i predaju programeru u formatu koji on već koristi.
Zašto je važan kada pravite aplikacije uz AI
AI alat za pravljenje aplikacija brzo piše i menja mnogo koda, a nije svaka izmena poboljšanje. Kontrola verzija je način da to bezbedno držite pod kontrolom.
- Poništavanje bez straha. Svaka sačuvana izmena je snimak. Ako AI nešto pokvari, vraćate se na poslednju dobru verziju.
- Vlasništvo. Kod na vašem GitHub nalogu ostaje vaš ako promenite alat, prestanete da plaćate jedan alat ili želite drugo mišljenje.
- Rad sa programerima. Gotovo svaki programer svakodnevno koristi Git. Repozitorijum im omogućava da pregledaju ono što je AI napisao, isprave to i vrate izmene.
- Postavljanje na drugo mesto. Mnoge platforme za hostovanje mogu da postave aplikaciju direktno iz GitHub repozitorijuma.
Svakodnevna analogija: praćenje izmena plus deljeni disk
Zamislite dokument sa uključenim praćenjem izmena, sačuvan na deljenom disku.
- Git je praćenje izmena: svaka izmena se beleži, sa podatkom ko ju je napravio, kada i zašto, i možete da se vratite na bilo koju verziju.
- GitHub je deljeni disk: dokument živi na mreži, drugi mogu da dobiju kopiju, i postoji mesto za komentare i odobravanje.
- Grana je kao sačuvana kopija pod nazivom „nacrt — novi odeljak o cenama“, da biste mogli da eksperimentišete a da ne diralate verziju na kojoj svi zavise. Ako eksperiment uspe, spajate ga nazad.
Razlika u odnosu na dokument je obim. Aplikacija ima stotine fajlova, a Git ih prati zajedno, pa je snimak stanje celog projekta odjednom.
Git i GitHub pojmovi koje ćete sresti
| Pojam | Jednostavno značenje |
|---|---|
| Repozitorijum (repo) | Fascikla projekta sa celom istorijom |
| Commit | Sačuvan snimak izmena, sa kratkom porukom koja ih opisuje |
| Grana (branch) | Zasebna linija rada, da eksperimenti ne poremete glavnu verziju |
| main | Uobičajen naziv glavne grane, verzije koja ide u produkciju |
| Merge | Prenošenje izmena iz jedne grane u drugu |
| Konflikt pri spajanju | Dve izmene su dirale iste redove, pa neko mora da izabere koju da zadrži |
| Clone | Preuzimanje pune kopije repozitorijuma, sa istorijom |
| Push / pull | Slanje vaših commit-ova na GitHub / preuzimanje tuđih commit-ova |
| Pull request (PR) | GitHub stranica koja predlaže spajanje grane, gde ljudi pregledaju i raspravljaju o izmenama |
| Fork | Vaša kopija tuđeg repozitorijuma na GitHub-u |
| Issue | GitHub zadatak ili prijava greške vezana za repozitorijum |
.gitignore | Spisak fajlova koje Git nikada ne sme da beleži, kao što su .env tajne i preuzete zavisnosti |
| GitHub Actions | Automatizacija koja se izvršava na GitHub-u, na primer testovi pri svakom pull request-u |
Dve stvari treba podvući. Prvo, Git istorija je po dizajnu trajna: ako se lozinka commit-uje i pošalje, brisanje u kasnijem commit-u je ne uklanja iz istorije. Drugo, commit je koristan koliko i njegova poruka. „Ispravljeno dvostruko brojanje rezervacija kad dvoje ljudi rezervišu u isto vreme“ vam kasnije pomaže; „ažuriranje“ ne pomaže.
Radni primer: predaja aplikacije napravljene uz AI frilenseru
Napravili ste portal za klijente uz AI alat za aplikacije. Radi, ali želite da frilenser programer doda zahtevnu integraciju sa vašim softverom za računovodstvo.
- Povežite projekat sa novim privatnim GitHub repozitorijumom i pošaljite ga. Repozitorijum sada sadrži kod i njegovu istoriju.
- Proverite šta je u njemu. Otvorite repozitorijum na GitHub-u. Ne bi trebalo da postoji
.envfajl niti API ključevi u kodu. Tajne ostaju u podešavanjima vaše platforme i sa frilenserom se dele posebno, ako uopšte. Pogledajte promenljive okruženja i tajne. - Pozovite frilensera kao saradnika samo na taj repozitorijum.
- On radi na grani pod nazivom poput
accounting-sync, commit-uje dok radi i otvara pull request kada završi. - Vi pregledate pull request. Čak i bez čitanja koda, možete da pročitate opis, proverite koji su fajlovi promenjeni i postavite pitanja u komentarima.
- Spojite kada ste zadovoljni, pa povucite (pull) izmene nazad u svoj alat za pravljenje aplikacija, da vi i AI nastavite od nove verzije.
Usput vidite tačno šta se promenilo i možete to da poništite ako treba. U tome je cela vrednost kontrole verzija u jednom toku rada. Ako razmišljate da li uopšte da angažujete programera, pogledajte angažovati programera ili praviti uz AI.
Česte greške i zablude
- „GitHub i Git su ista stvar.“ Git radi i bez GitHub-a; alternative kao što su GitLab i Bitbucket takođe hostuju Git repozitorijume.
- „GitHub će pokrenuti moju aplikaciju.“ GitHub čuva kod. Pokretanje za javnost je veb hosting, posebna usluga (iako neki hosting servisi postavljaju aplikacije direktno iz GitHub-a).
- Commit-ovanje tajni. Najštetnija i najčešća greška. Koristite
.gitignoreza.envfajlove, a svaki ključ koji je ikada poslat treba zameniti. - Samo jedna grana i bez poruka. Dovoljno za samostalne eksperimente, ali dajte commit-ovima jasne poruke i koristite grane za sve rizično.
- Uređivanje na dva mesta istovremeno. Ako menjate kod na GitHub-u i u AI alatu bez povlačenja izmena između, stvarate konflikte. Izaberite jedno mesto za izmene i uskladite ih pre nego što pređete na drugo.
- Verovanje da je privatni repozitorijum rezervna kopija svega. On čuva kod, a ne sadržaj baze podataka niti otpremljene fajlove. Njima treba zasebna rezervna kopija.
Šta tražiti od AI alata za aplikacije
- „Dodaj
.gitignorekoji isključuje.env, fascikle sa zavisnostima i izlaz build-a.“ - „Napiši README koji objašnjava kako se instalira, koje su promenljive okruženja potrebne (samo nazivi) i kako se aplikacija pokreće.“
- „Dodaj
.env.examplesa svakim nazivom promenljive i bez stvarnih vrednosti.“ - „Koristi jasne, opisne poruke commit-ova za svaku izmenu.“
Ova četiri zahteva prave repozitorijum koji programer može da preuzme za nekoliko minuta. Za premeštanje aplikacije na sopstvene servere pogledajte kako izvesti i samostalno hostovati aplikaciju napravljenu uz AI, a za učvršćivanje pre prvih pravih korisnika kako prototip sa AI dovesti u produkciju.
GitHub i Mythex
Mythex čuva istoriju za vas na svakom planu: posle svakog uspešnog zadatka agenta pravi checkpoint, odnosno Git snimak na koji se možete vratiti. Na Pro planu možete da povežete GitHub i gurnete ili povučete projekat u svoj repozitorijum, ili preuzmete ceo projekat kao arhivu; tajne i instalirane zavisnosti su isključene iz izvoza. GitHub ovde služi za sinhronizaciju koda, a ne za prijavu u Mythex. Pogledajte GitHub, izvoz i uvoz u dokumentaciji i stranicu sa cenama za to šta svaki plan uključuje.
Pitanja
Koja je razlika između Git-a i GitHub-a?
Git je besplatan softver koji beleži istoriju fajlova projekta na bilo kom računaru. GitHub je veb sajt, u vlasništvu kompanije Microsoft, koji hostuje Git repozitorijume na mreži i dodaje alate za saradnju, kao što su pull request-ovi, issue-i i automatizacija.
Da li mi je potreban GitHub da bih pravio aplikaciju uz AI?
Ne. Mnogi AI alati za pravljenje aplikacija čuvaju istoriju za vas unutar samog proizvoda. GitHub postaje koristan kada želite sopstvenu kopiju koda, kada želite da sarađujete sa programerom ili kada planirate da aplikaciju hostujete negde drugde.
Da li je GitHub besplatan?
GitHub ima besplatan plan koji uključuje javne i privatne repozitorijume, što je dovoljno za većinu pojedinaca i malih timova. Plaćeni planovi donose upravljanje timom i dodatne funkcije. Aktuelne detalje proverite na GitHub-ovoj stranici sa cenama.
Da li je moj kod javan na GitHub-u?
Samo ako repozitorijum učinite javnim. Privatne repozitorijume vide samo vi i osobe koje pozovete. Čak ni u privatnom repozitorijumu nikada ne commit-ujte lozinke ni API ključeve.