Git și Github: un ghid pentru începători pentru începători complet

Publicat: 2017-08-15

În ciuda a ceea ce ne spun televiziunea și filmele, viața de dezvoltator de software nu include așezarea într-o cameră întunecată, tastatura noastră iluminată doar de strălucirea monitorului, gândul de a interacționa cu o altă ființă umană respingătoare. Nu, viața de dezvoltator de software este socială și colaborativă - uneori până la frustrare. De aceea avem git și Github.

Git este un software de control al versiunilor care face colaborarea cu coechipierii foarte simplă ... după ce ați trecut de curba de învățare inițială. Poate fi intimidant, dar de aceea sunt aici!

Ce este Git?

Ei bine, nu doar felul în care noi, sudicii, scoatem varmintele de pe verandele noastre, vă spun asta.

Așa cum am spus mai sus, Git este un software de control al versiunilor. A fost creat de Linus Torvalds, tipul care a inventat Linux. Nu trebuie să folosiți Linux pentru a utiliza git - îl puteți folosi și pe Windows și Mac.

Git vă permite să urmăriți cu ușurință fiecare revizuire pe care o faceți dvs. și echipa dvs. în timpul dezvoltării software-ului dvs. Voi toți partajați un depozit de cod pe care se lucrează independent și apoi fuzionat împreună. De asemenea, nu trebuie să fiți conectat tot timpul, deoarece proiectul este atât salvat local pe fiecare mașină, cât și de la distanță (probabil la Github).

Git este special (și aproape obligatoriu) deoarece puteți reveni la orice versiune anterioară a codului dvs., vă puteți ramifica și dezvolta o caracteristică specifică fără a afecta nimic sau pe nimeni altcineva și pentru a menține siguranța împotriva corupției datelor din cauza naturii distribuite.

De asemenea, oferă criptare ușor de implementat și compatibilitate cu sistemul de operare încrucișat, precum și fluxuri de lucru asincrone, neliniare, astfel încât, indiferent unde vă aflați, să puteți lucra la anumite aspecte ale proiectului dumneavoastră.

Practic, dacă nu utilizați git, codificați cu o mână legată la spate.

Vocabular obligatoriu

Când începeți să utilizați git, poate fi intimidant. Comenzile și conceptele pot părea total străine dacă nu ați folosit niciodată nicio formă de control al versiunii în trecut. Cu toate acestea, le veți ridica foarte repede.

Repertoriu:

Adesea denumit repo . Un depozit este colecția de fișiere și foldere pe care le utilizați pentru a urmări git. Depozitul constă din întregul istoric al modificărilor echipei dvs. la proiect. Este marea cutie cu care ți-ai aruncat codul și echipa ta.

Github:

Cea mai populară soluție de stocare la distanță pentru git repos. De asemenea, vă permite să setați permisiuni de acces pentru proiecte, să urmăriți și să trimiteți erori, să acceptați cereri de caracteristici, să vă abonați la notificările din depozit și să utilizați o interfață grafică, mai degrabă decât să utilizați linia de comandă. Repozitiile sunt prestabilite public, dar conturile plătite pot avea conturi private.

Angajare:

Gândiți-vă la acest lucru ca salvându-vă munca. Când vă angajați într-un depozit, parcă strângeți fișierele așa cum există în acel moment și le puneți într-o capsulă a timpului. Confirmarea va exista doar pe mașina dvs. locală până când nu este împinsă la un depozit la distanță.

Apăsați:

Împingerea este pâinea pentru a comite untul. Comiterea aruncă fișierele în capsula temporală și împingerea este ceea ce lansează capsula în spațiu. Împingerea înseamnă, în esență, sincronizarea comenzilor dvs. în cloud (din nou, probabil Github). De asemenea, puteți împinge mai multe confirmări simultan. Puteți lucra offline, să faceți multă muncă și apoi să împingeți totul până la Github când vă întoarceți în civilizație cu acel dulce, dulce wifi.

Sucursala:

Vă puteți gândi la repozitia dvs. git ca la un copac. Trunchiul copacului, software-ul care se activează, se numește Master Branch. Acesta este cel care intră în direct. Ramurile acelui copac se numesc, bine, ramuri. Acestea sunt instanțe separate ale codului care se desprinde de baza de cod principală. S-ar putea să vă desprindeți pentru o singură caracteristică sau un patch experimental. Prin ramificare, puteți păstra integritatea software-ului și aveți o modalitate de a reveni dacă faceți ceva complet nebun. De asemenea, vă permite să lucrați la sarcina dvs. fără a vă împiedica în calea echipei dvs. (sau a acestora în a voastră).

Combina:

Când o ramură este lustruită, fără bug-uri (cel puțin din câte vă puteți da seama) și gata să devină parte a bazei de cod primare, aceasta va fi îmbinată în ramura master. Fuziunea este exact cum sună: integrarea a două ramuri împreună. Orice cod nou sau actualizat va deveni o parte oficială a bazei de cod. Oricine se ramifică din punctul de fuziune va avea și acest cod în sucursala lor.

Clonează:

Clonarea unei repo este aproape exact cum sună. Prinde întregul depozit online și face o copie exactă a acestuia pe computerul dvs. local. Va trebui să faceți acest lucru din mai multe motive, dintre care cel puțin începe în mijlocul unui proiect cu o echipă nouă, schimbând stațiile de lucru sau pornind de la o repo deteriorată.

Furculiţă:

Forkingul seamănă foarte mult cu clonarea, doar că în loc să faceți un duplicat al unei repo existente pe mașina dvs. locală, primiți o repoare complet nouă a codului respectiv sub propriul dvs. nume. Această caracteristică este utilizată în principal pentru a lua o bază de cod existentă și pentru a merge cu ea într-o direcție complet nouă, ceea ce se întâmplă foarte mult în software-ul open-source; dezvoltatorii văd o idee de bază care funcționează, dar vor să urmeze un mod diferit cu ea. Forkingul permite ca acest lucru să se întâmple. De asemenea, puteți juca în depozitul unui alt dezvoltator, ca și cum ar fi propriul dvs. sandbox personal. Și dacă faceți ceva care credeți că le-ar putea plăcea, puteți face o cerere de extragere pentru ca acesta să fie îmbinat.

Solicitare de extragere:

O cerere de extragere este atunci când trimiteți o cerere pentru ca modificările pe care le-ați făcut (fie pe o ramură, fie pe o furculiță) să fie trase (sau îmbinate) în ramura principală a depozitului. Acesta este momentul important. Aici se întâmplă magia. Dacă cererea de extragere este aprobată, veți fi contribuit oficial la software, iar Github va arăta pentru totdeauna exact ceea ce ați făcut. Cu toate acestea, dacă cererea de tragere este respinsă din orice motiv, negatorul va putea să ofere feedback cu privire la motivul pentru care cererea a fost respinsă și ce puteți face pentru a fi acceptată.

Noțiuni introductive și comenzi obligatorii

Nu a fost prea rău, nu-i așa?

Dreapta. Acum, că aveți o idee clară despre ce este git, este timpul să vă scufundați și să vă murdăriți mâinile.

Ar trebui să profit de această ocazie pentru a observa, totuși, că voi presupune că folosiți linia de comandă pentru a interacționa cu git. Sigur că există clienți GIT grafice (și Github chiar vă permite să faceți totul destul de mult prin interfața web ea), dar în sensul acest post nu vom deranja cu ei. Veți face o mână de lucruri în afara terminalului, dar linia de comandă va fi noul dvs. BFF. Deci, cu asta mergem și noi.

Cum se instalează Git

Git (probabil) nu a venit instalat pe computerul dvs., așa că trebuie să îl ajungem acolo. Din fericire, instalarea git este foarte ușoară, indiferent dacă sunteți pe Linux, Mac sau Windows.

Pentru Linux, deschideți terminalul și tastați sudo apt-get install git-all (dacă sunteți în Ubuntu. Dacă nu, există o listă a tuturor comenzilor de instalare a pachetului Linux pentru oricare altă distribuție pe care vă aflați.)

Pe Windows, este la fel de simplu. Descărcați programul de instalare și îl rulați.

Pe Mac, trebuie doar să deschideți terminalul și să tastați git . Dacă git nu este instalat, veți vedea acest lucru:

După ce faceți clic pe Instalare, sunteți bine să plecați.

Vedea? Super ușor!

Folosind Git

Iată de unde începe distracția. Acum că ai instalat git, este timpul să ... git-r-done! Hah! Dar este cu adevărat timpul să ne adâncim și să învățăm să începem să folosim această piesă uimitoare de vrăjitorie din linia de comandă. Și ce loc mai bun pentru a începe decât Github?

Așadar, mergeți mai departe și înregistrați-vă pentru noul dvs. cont Github (sau conectați-vă dacă aveți deja unul și voi fi alături de dvs. într-o secundă).

Github este gratuit pentru depozitele publice și puteți avea și cele private la un preț. (FYI: puteți obține repozite private gratuite la Bitbucket, care este un loc mai puțin cunoscut, dar minunat). În cea mai mare parte, opțiunea gratuită de pe Github este bună pentru majoritatea oamenilor (și funcționează și ca un CV viu!), Dar unii clienți și angajatori vor avea nevoie de confidențialitate și securitate, deci este bine să aveți opțiuni.

După aceea, sunteți gata să vă configurați primul depozit! După ce vă confirmați adresa de e-mail și toate acele lucruri distractive.

Veți dori mai întâi să configurați depozitul în Github. Puteți să o faceți și pe computer și apoi să o încărcați, dar este mai simplu să o faceți mai întâi pe web.

Observați că nu mă îngrijorez în legătură cu o licență sau .gitignore în această repo. Deoarece nu este o piesă reală de software, nu trebuie să-mi fac griji, dar în cazuri de producție, .gitignore vă permite, evident, să ignorați fișierele din directorul repo. Și puteți citi despre ce licență are nevoie software-ul dvs. aici.

Cu toate acestea, inițializez repo cu un fișier README, pe care ar trebui să îl utilizați pentru a păstra documentația de bază pentru proiect. Tind să le folosesc ca un tracker pentru modificări majore, liste de sarcini și diferite tipuri de note în timp ce lucrez. Dar asta e pentru proiecte personale. Diferiti lideri de echipa vor avea asteptari diferite.

Acum, că repo există la Github, este timpul să îl duceți la mașina dvs. locală prin clonare. În dreapta repo, chiar deasupra listei de fișiere, veți vedea un buton verde pe care scrie „Clonați sau descărcați”. Faceți clic pe acesta și veți vedea acest lucru:

Deoarece clonăm, putem ignora totul, cu excepția părții despre Clonarea cu HTTPS. Nu va trebui să configurați nimic. Va trebui doar să introduceți numele de utilizator și parola atunci când apăsați.

În primul rând, totuși, trebuie să vă configurați locul în care doriți ca repo să locuiască pe mașina dvs. locală. Deschideți terminalul. (Utilizatorii de Windows, căutați și deschideți un program numit Windows Powershell. Vă sugerez, de asemenea, să faceți clic dreapta și să selectați „Rulați ca administrator”).

Prima comandă pe care trebuie să o înveți este ls . Aceasta va enumera totul în directorul curent. Pentru a simplifica lucrurile, să facem direct folderul nostru dev în direct în directorul principal al computerului. Puteți utiliza mkdir dev pentru a crea un director numit dev . Destul de simplu, nu? Dacă ls din nou, veți vedea noul folder listate.

Apoi, doriți să vă mutați în noul dvs. director folosind cd dev , care este comanda pentru directorul de schimbare . Vezi, linia de comandă nu este deloc înfricoșătoare! Dacă trebuie să reveniți la directorul anterior, folosiți doar cd ...

După ce te în interiorul dosarul nou dev, de data aceasta la git acest partid a început. Heh heh heh.

Începeți prin a copia adresa URL care apare după ce faceți clic pe butonul verde „Clonează sau Descarcă” de pe Github. Va arăta cam așa: https://github.com/bjk1337/myfirstrepo.git

Comenzi pentru clonarea unui depozit Git de la Github

  • git clone https://github.com/bjk1337/myfirstrepo.git
  • eu sunt
  • cd myfirstrepo - sau orice ai numit repo
  • eu sunt

După aceea, terminalul dvs. ar trebui să fie ceva de genul acesta, arătând fișierul README pe care l-ați configurat pe Github. Felicitări! Tocmai ați folosit Git pentru prima dată și acum sunteți gata să începeți dezvoltarea.

Nitty Gitty Curajos

Acum că aveți o repo pe mașină, trebuie să învățați să o utilizați. Așadar, hai să avansăm rapid un pic și să spunem că ați lucrat o vreme la un proiect interesant și că aveți câteva fișiere în director. Este timpul să vă angajați și să îi împingeți la Github.

Adăugarea și angajarea într-un depozit Git

  • starea git - Această comandă vă va arăta ce fișiere nu au fost adăugate în listă pentru următorul commit. În majoritatea aplicațiilor terminale, fișierele neadăugate / adăugate vor fi, respectiv, roșu / verde.
  • git add. - prin adăugarea unui. la sfârșitul comenzii, îi spuneți git să includă totul în director. Dacă doriți să adăugați un singur fișier, pur și simplu folosiți numele acestuia. Cum ar fi functions.php .
  • starea git - În funcție de dacă ați utilizat. sau numele fișierului, orice ați adăugat ar trebui să fie verde acum.
  • git commit -m „adăugați trei fișiere goale” - Când comiteți aceste fișiere, ar trebui să lăsați și un mesaj rapid pentru a le informa colegilor de echipă (sau viitorului dvs. sinelui) exact ce a fost în acel commit. Convențiile standard git spun că ar trebui să fiți cât mai concis și specific posibil și să începeți mesajul folosind timpul prezent al verbului.

Terminalul dvs. va avea acum mult text și ar trebui să arate așa. Dar acum știi ce înseamnă totul!

Apăsarea către un depozit Git la distanță precum Github

Împingerea către o repo este chiar mai ușoară decât atât.

  • starea git - Ar trebui să verificați întotdeauna pentru a vedea cum arată lucrurile și pentru a vă asigura că sunteți pe ramura corectă.
  • git push
  • Introduceți numele de utilizator și parola pentru Github - Rețineți, câmpul de parolă va rămâne gol, chiar și atunci când tastați. E in regula. Tastați-l și apăsați Enter. Dacă ați folosit SSH, veți sări peste acest pas.

Puteți accesa contul dvs. Github și puteți verifica repo, iar fișierele dvs. vor fi acolo, comiteți mesaje și tot!

Ramificare și Fuziune

Ultimele două comenzi pe care trebuie să le cunoașteți se referă la ramificare și fuziune. Așa cum am spus mai sus, lucrul la o ramură păstrează baza de cod principală în condiții de siguranță și, odată ce modificările dvs. sunt dandy, le puteți îmbina pe toate împreună.

Acestea pot fi puțin dificile, deci este posibil să fie nevoie de o provocare pentru a le face să se joace frumos.

  • git checkout -b „ramură1” - Această comandă va crea atât o ramură nouă pe care o titlați, cât și vă va schimba pe ea ca ramură de lucru. Combină atât comenzile git checkout, cât și ramurile git într-o linie de cod la îndemână.
  • atingeți awesome.html - aceasta este doar o comandă de completare pentru a crea un nou fișier html pe care îl voi combina înapoi în master.
  • Și, ca înainte, veți git status, git add awesome.html, git commit -m „create awesome.html”
  • Git status din nou vă va permite să vedeți că totul este așa cum ar trebui să fie.

Dacă încercați să îl împingeți înainte de a vă îmbina, veți primi un mesaj că trebuie să setați originea repo. Origin este o convenție de numire ciudată pentru ceea ce calculatorul dvs. consideră repo la distanță. Deci, practic, îi spui doar că, da, este în regulă să împingi această ramură către Github, așa cum a făcut maestrul. Iată un fir bun despre originea git din Stack Overflow.

Dacă acest lucru este în afara drumului, vă va spune că a trecut la branch1 -> branch1.

Puteți reveni la ramura principală cu git checkout master (nu există checkout -b de data aceasta pentru că o folosiți doar la crearea unei noi ramuri, nu la schimbare. Am comandatele mele amestecate în captura de ecran de mai jos și am încercat git branch master Nu a reușit deoarece maestrul exista deja.

  • starea git - Ca întotdeauna.
  • git merge branch1 - Deoarece totul în acea ramură este în regulă, putem continua și fuziona.
  • Dacă vom obține din nou starea , vom vedea că suntem înaintea originii / masterului cu 1 commit. Asta înseamnă că nu am împins toate modificările pe care le-am făcut Github.
  • git push pentru a sincroniza lucrurile!

Verifică-ți contul Github - vei vedea că tot ce ai făcut se reflectă acolo. Puteți vedea diferitele mesaje de validare, numărul de sucursale și confirmări pe care le-am făcut, precum și orice colaboratori la repo și ceea ce au făcut și ei.

Si asta e! Felicitări! Tocmai ați modificat fluxul de lucru git de bază. Puteți face o cale, cale, mod de lucruri mai complicate decât acest lucru cu git, dar acest lucru este destul de aproape de ceea ce veți folosi , probabil , pe o bază de zi cu zi , atunci când ești doar ... gitting a început.

Oh, încă un lucru!

Github Repo, myfirstrepo , pe care l-am folosit pentru acest articol este încă live. Simțiți-vă liber să o verificați, să vă jucați cu ea, să o forțați, să o clonați sau orice credeți că vă va obișnui să utilizați git. A se distra! (Și vă mulțumesc că ați purtat cu mine și cu toate jocurile mele de cuvinte.)

Imagine în miniatură a articolului de către MchlSkhrv / shutterstock.com