Prvi programi koje napišete vjerojatno neće biti baš impresivni. Napravit ćete puno pogrešaka i nikada se nećete poželjeti vratiti u prošlost.
No, uskoro ćete pisati velike, složene programe. Možda ćete sada izbrisati neke stvari koje želite vratiti kasnije. Ili ćete možda dovesti prijatelja da pomogne i želite graciozno dodati njihove promjene u svoj program dok nastavite raditi na svojim dijelovima.
Tu dolazi kontrola verzija i to je vještina koju će svaki poslodavac očekivati da ćete je svladati. Također je izuzetno korisno za sve koji rade na bilo čemu što je spremljeno u komadima - od računalnog programa preko recepta do romana.
Što je kontrola verzija?
Kontrola verzija odnosi se na mogućnost spremanja vašeg mjesta u dokumentu ili mapi i referencu na prethodna spremanja.
Dok pišem ovaj članak, moje najnovije promjene neprestano prepisuju moje prethodne verzije. To nije kontrola verzija, jer se ne mogu vratiti na nacrt koji sam imao prije tjedan dana. Ali da sam ovo napisao koristeći Git, to bi bilo moguće.
Što je Git?
Git je sustav za upravljanje verzijama koji je razvio Linus Torvalds 2005. godine (isti tip koji je napisao Linux). Git pomaže programerima da prate stanje njihovog koda i omogućuje suradnju na bazi koda. Preći ćemo na glavne komponente malo kasnije.
Ako želite nastaviti dalje, morat ćete instalirati Git na svoje računalo. Otvorite terminal i upišite git
. Ako vidite popis mogućih naredbi, spremni ste!
Mnoga računala dolaze s Git već instaliranim. Ako trebate instalirati, možete slijediti upute ovdje za svoje računalo.
Korištenje Gita
Ako ste ikada koristili računalni program ili videoigru i primijetili da se možete vratiti na prethodno spremljenu verziju, u biti razumijete potrebu za Gitom. To je jednostavno spremanje snimke vašeg programa na vrijeme.
No, umjesto da treba pratiti svaki pojedini redak koda u vašem programu, on umjesto toga bilježi promjene između koda koji imate sada i zadnjeg spremanja. Vodi tekuću bilješku kada je svaki redak koda zadnji put spremljen i pohranjuje ih u posebnu skrivenu mapu.
Razmotrimo ovaj JavaScript program. Na konzolu ispisuje tri retka (izlaz koji možete vidjeti u pregledniku ili terminalu):
console.log('Hello, this is a git example!') console.log('And here is another!') console.log('And yet a third')
git init
Ako želim spremiti verzije svog rada, mogu koristiti Git. Prvo ću upisati git init
svoj terminal kako bih mogao početi koristiti Git. To će stvoriti .git
mapu, u koju će Git spremati svoje datoteke.
git dodaj
git add .
će dodati sve datoteke u našem programu. Ako ste to učinili git init
nakon što ste kreirali datoteku ili bilo kada napravite nove datoteke, morat ćete reći Git-u da započne s praćenjem promjena na njima pomoću ove naredbe.
git počiniti
Dalje ću tipkati git commit -am "Initial commit"
. git commit
je naredba za spremanje verzije našeg koda. -am
Se naziva „zastava” i signali da su izborni postupci bismo željeli da se s tim počiniti. Zastava a
znači da ćemo spasiti sve naše promjene. Zastava m
označava da ćemo nakon toga poslati Poruku, što je "Initial commit"
.
Ovdje možete napisati sve što želite - freeCodeCamp ima mnogo članaka o tome kako napisati sjajne poruke za urezivanje.
Kako Git sprema promjene
Ako napravimo promjenu u našem programu (poput promjene teksta u prvom retku), možda ćemo htjeti spremiti verziju. Mogli bismo čak i prebacivati između verzija ako bismo željeli vidjeti kako se naš program s vremenom promijenio.
console.log('Now I have changed the first line.') console.log('And here is another!') console.log('And yet a third')
git razl
Evo kako ovo izgleda dok trčite git diff
. Git će vam pokazati razliku između koda koji imate sada i zadnjeg puta kad je spremljen.
Malo je teško razumjeti što se ovdje događa, ali -
jesu brisanja i +
umeci. Uklonili smo tekst "Zdravo, ovo je git primjer!" i dodao tekst "Sad sam promijenio prvi redak." Na ovaj način Git prati što se promijenilo između verzija.
diff --git a/git.js b/git.js index eb0f1d1..8dbf769 100644 --- a/git.js +++ b/git.js @@ -1,3 +1,3 @@ +console.log('Now I have changed the first line.') -console.log('Hello, this is a git example!') console.log('And here is another!') console.log('And yet a third')
Sada kada smo pregledali promjene koje su počinili, možemo ići naprijed i učiniti drugi počinili su: git commit -am 'Update first console log'
. Ovo će spremiti promjene koje sam napravio u prvom retku teksta.
git log
Možemo pregledati obveze koje smo napravili naredbom git log
. Ako ga sada pokrenem u svom programu, dobit ću ovaj izlaz:
commit 67627dd44e84a3106a18a19e94cf9f3723e59b3c (HEAD -> master) Author: amberwilkie Date: Wed Apr 22 16:55:39 2020 -0400 Update first console log commit 49fe4152f474a9674a83e2b014a08828209d2690 Author: amberwilkie Date: Wed Apr 22 16:54:59 2020 -0400 Initial commit
Vidimo naše poruke urezivanja, vrijeme koje smo počinili i jedinstveni ID našeg predavanja, koji možemo koristiti za referenciranje obveza u budućnosti.
git naplata
Ako smo se željeli vratiti i vidjeti promjene u našem kodu iz prethodnog urezivanja, učinit ćemo to sa git checkout 49fe4152f474a9674a83e2b014a08828209d2690
. Git će naš kod staviti u privremeno stanje kako bismo na vrijeme mogli vidjeti kako je izgledao kod na toj snimci.
Kopirao sam ID za prvo urezivanje. Ako pokrenem ovu naredbu, moj program kaže "Zdravo, ovo je git primjer!" na prvom retku.
Utipkajte da biste se vratili na najnoviji kôd git checkout master
.
Podružnice
Ako ste primijetili gore, morali smo tipkati master
kako bismo se vratili na trenutno stanje našeg koda. Zašto? Jer master
je zadani naziv za granu grana - mjesto gdje je naš kod najnoviji.
Git se za održavanje našeg koda oslanja na grananje. Možete uzeti master
u obzir deblo vašeg stabla koda. Možete se prekinuti i napraviti neke promjene, ali krajnji cilj je uvijek vratiti ih u prtljažnik, u master
.
Možete koristiti git checkout
za stvaranje nove grane, a ne samo za provjeru prethodnih verzija vašeg koda. Pokušajte git checkout -b new-branch
. -b
Zastava se koristi kada se izradi novi izdanak i nakon zastave pišemo ime naše nove podružnice. Na ovoj grani možemo napraviti mnogo predavanja, a kasnije ih vratiti na svladavanje postupkom koji se naziva spajanje .
Na donjem dijagramu točke predstavljaju obveze. Dvije grane su napravljene "isključeno" od gospodara. U razvoju softvera, ove grane često nazivamo za razliku od glavne matične grane. Plava grana je spojena natrag u glavnu, a žuta se još uvijek razvija.
Imajte na umu da, iako je žuta grana stvorena nakon plave grane, u toj će grani biti vidljive samo promjene iz matične stranice. Ako bismo negdje u budućnosti napravili treću granu, promjene u glavnoj i plavoj grani bile bi prisutne u novoj, trećoj grani.

git spajanje
git merge
uzet će sve obveze koje ste napravili na toj grani i zalijepiti ih u master
granu, štedeći vaš rad.
Zašto koristiti grane?
Ako radite sami, možda nema puno smisla dijeliti svoj posao na grane. Zašto jednostavno ne uštedjeti sve master
?
Korisnost razgranavanja postaje vrlo jasna dok ne počnemo razmišljati o radu s timom programera. Kad bi se svi obvezali u master
poslovnicu svaki put kad bi napravili promjenu, stvari bi vrlo brzo postale neuredne. Također bi bilo teško kontrolirati koji kod ide "u proizvodnju" (uživo za kupce) i na kojem se kodu još uvijek testira ili radi.
Na taj način svaki programer može imati vlastitu poslovnicu (ili, vjerojatno, mnogo njih), raditi na svojoj značajci onoliko dugo koliko je potrebno i spojiti je kad za to dođe vrijeme.
Što je GitHub?
GitHub je besplatna (za osobnu upotrebu) platforma za kodiranje u oblaku. Radi s Gitom na vašim računalima i računalima vaših kolega, služi kao izvor , izvor istine za sve koji rade na kodu.
Vi i vaši suradnici povremeno prenosite njihov kôd na GitHub, a GitHub nudi alate koji pomažu u upravljanju promjenama koda tijekom vremena.
Prijenos koda na GitHub
Prvo ćete morati stvoriti GitHub račun. Ovaj ćete račun koristiti za cijelu svoju programsku karijeru, zato vrući savjet: držite se profesionalnog imena, po mogućnosti s vašim stvarnim imenom.
Jednom kad uđete, potražite znak +
u gornjem kutu. Kliknite "Novo spremište" (naziv za Git mape, skraćeno "repo"). Dajte mu ime - vjerojatno isto kao mapa koju ste ranije stvorili u kojoj ste spremili svoje obveze. Zatim kliknite "Stvori spremište". Sada možete kopirati url na koji ste preusmjereni i mi možemo postaviti podrijetlo našeg koda.
Ovdje će kad-tad biti korak provjere autentičnosti - samo slijedite upute. Git je vrlo dobar kada nam daje jasne upute o sljedećim koracima.
git remote dodaj podrijetlo
Sada ćemo reći našoj bazi kodova (mapa u kojoj je naš kôd) gdje pohraniti naš kod u oblaku. Upisat ćemo git remote add origin
, što će postaviti origin
za naše spremište. Sada možemo pritisnuti naš origin
da naš oblak pohrani na GitHub.
git push
Pod pretpostavkom da smo još uvijek u našoj master
podružnici (to jest, nismo provjerili drugu podružnicu), sada možemo tipkati git push
i naš će kôd ići na GitHub.
Pregled vašeg koda
Sada vaš kod živi u GitHubu! Evo kako izgleda moj primjer odozgo nakon što slijedim GitHub korake koje sam objasnio:

You can click through the files and folders of your repository, viewing the current state of the code. You can also view previous versions of the code, by clicking "X commits" on the right side, middle. You'll see a list of the commits made to the repo and if you click into them, you can browse the files of your project as they existed at that slice of time.
Pull Requests
There are many other features of GitHub, but the most important in collaborating with colleagues is a pull request. A pull request (very frequently shortened to PR) is a way to manage incoming changes to the code base.
To make one, you'll make a new branch on your local computer, create at least one commit on that branch, then git push origin head
to send that branch to GitHub. (You can put the name of your branch instead of head
but it's useful for keeping everything matched up exactly).
Now when you go back to GitHub, you should see your branch available to make a PR.

If you click the "Compare & pull request" button, you'll be able to change many settings for your PR. Most important are generally title and description. If you're working on a team, you can tag colleagues to ask them to review your code, add to projects, and many other features you probably don't care about yet.

Note that we are comparing branches. Here we are requesting to add the changes from this branch (pr-example
) into the master
branch. But we could target any of the other branches in our repo. For now, just understand that master
isn't the only branch you can "make a pull request against".
When you click "Create Pull Request", you'll see this screen:

You can see all the commits in this branch (I have only one - "Change third line of program"), and you can also merge your pull request.
Remember how we could merge our code locally when we talked about Git? We can perform the same action with our cloud-hosted code on GitHub. If you click the green "Merge pull request" button, your changes will be merged into master.
git pull
The last command you need to know right now is git pull
. If you merged your PR into the master
branch on GitHub, there are now changes to the origin
that you do not have yet on your local computer. If you check out the master
branch, then git pull origin master
, the changes you have just merged will now be on your local computer.
➜ git-example git:(master) git pull origin master From //github.com/AmberWilkie/git-example * branch master -> FETCH_HEAD Updating 67627dd..38ad2da Fast-forward git.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
That "Fast-forward" refers to our local master branch "catching up" with the origin
branch on GitHub. We have completed the circle:
- Local changes
- Push to GitHub and make PR
- Merge PR into master
- Pull master to local computer
Once you are comfortable with these steps, you will be 80% of the way to mastering Git and GitHub!