Probabil sunteți familiarizați cu instrumente, cum ar fi Git și Subversion. Dar, în calitate de web designeri, este destul de posibil ca, deși s-ar putea spune că folosiți controlul versiunii în proiectele dvs., adevărul este că, de cele mai multe ori, pur și simplu nu faceți.
Dacă vă potriviți această descriere, nu vă faceți griji; nu esti singur. De fapt, opinia autoarei este în întregime nereușită că marea majoritate a designerului de web nu! Dilema este că există o convingere comună că controlul versiunii este strict pentru codec-urile hardcore, care își petrec zilele în întuneric și care rareori vin pentru aer, cu excepția cazului în care cuptorul cu microunde atinge semnalele că buzunarul fierbinte este gata să fie mâncat.
În realitate, dacă codați pentru web, fie pe front-end sau back-end, este datoria dvs. să codificați în mod responsabil: utilizați controlul versiunii.
Command + Z
pentru un număr dureros de secunde, pe măsură ce urmăriți editorul inversează modificările.Recunoașteți-o: fiecare dezvoltator a identificat unul dintre semnele observate anterior la un moment dat în cariera sa. Dar amintiți-vă: primul pas spre recuperare este să recunoașteți că aveți o problemă!
Git este cel mai popular sistem de control al versiunilor disponibil.
Deci, cum influențează Git această chestiune de control? Ei bine, definiția super nerdy este că Git este un sistem distribuit de control al versiunii, dezvoltat de Linus Torvalds, unde fiecare director de lucru este propriul depozit cu istoricul complet disponibil în orice moment. În plus, Git vă oferă posibilitatea de a partaja codul și de a crea mai multe sucursale (sau linii de timp) pentru proiectele dvs., ceea ce îl face deosebit de potrivit pentru echipele de dezvoltare agile.
O definiție mai ușor de înțeles ar putea fi: Git este un instrument de linie de comandă pe care tu și alți dezvoltatori din echipa dvs. îl folosiți pentru a salva instantanee frecvente ale proiectelor dvs. În orice moment, oferă flexibilitatea de a redirecționa modificările la stările anterioare, cu o singură comandă.
Cartea lui Scott Chacon, "Pro Git", este disponibilă în întregime pe site-ul Git.
Desigur, primul pas pentru recuperarea "Cowboy Coding" este de a descărca Git de la git-scm.com. Utilizați oricare dintre următoarele adrese URL, în funcție de sistemul de operare ales.
Apoi, trebuie să configurați instalarea doar printr-o atingere, asociind un nume de utilizator și o adresă de e-mail. Deschideți cea mai apropiată consola (Terminal pe Mac) și rulați:
$ git config - nume de utilizator global "Numele dvs." $ git config --global user.email [email protected]
Nu-ți face griji; acest lucru trebuie doar să fie introdus o dată, după ce instalați pentru prima oară Git. Acum, pentru fiecare acțiune pe care o luați, Git va utiliza aceste setări.
Există și alte opțiuni de configurare, cum ar fi specificarea editorului de cod care trebuie folosit, când Git vă cere să introduceți un mesaj de comitere, dar ignorați faptul că pentru moment.
Felicitări, Git a fost instalat cu succes!
Ca și în cazul oricărei noi tehnologii, există un pic de învățare necesar.
Unul dintre aspectele cele mai dificile pentru a învăța Git este să descifreze ceea ce se referă la diferitele jargon-uri. Comite? Punerea în scenă? Ramuri? Busteni? huh?
Ca și în cazul oricărei noi tehnologii, există un pic de învățare necesar. Din fericire, la fel de complex ca și Git, în special ca designer de web, veți descoperi că o mână de comenzi vor merge mult. Pentru comparație, luați în considerare dicționarul englez, apoi numărul de cuvinte pe care le folosim realist în conversațiile zilnice. Același lucru este valabil și pentru Git - la un nivel mult mai scăzut. Deci, nu te simti copleșit. Luați o singură comandă la un moment dat.
Pentru a elimina această terminologie confuză, este mai bine să gândiți mai întâi în termeni de ceva tangibil în lumea reală: un camion de livrare.
Imaginați-vă că ați început un nou site web static. Ați creat dosare pentru fișiere JavaScript și CSS, precum și un fișier index.html cu un pic de cod HTML boilerplate. De fapt, faceți exact acest lucru chiar acum! Când ați terminat, este timpul să creați prima comitere.
Reveniți la Terminal și introduceți:
git init
Această comandă, "inițializați Git", informează Git că dorim controlul versiunii pentru acest proiect. Sau "porniți aprinderea". Trebuie doar să fie executat o singură dată, la începutul ciclului de viață al unui nou proiect.
Apoi, să determinăm ce este "starea".
git status
Dacă lucrați de-a lungul timpului, veți vedea probabil ceva de-a lungul liniilor:
# La master # # # comiteză inițială # # Fișiere nedorite: # (utilizați "git add... "pentru a include în ceea ce va fi angajat) # # index.html nimic adăugat pentru a comite dar fișierele netracked prezente (utilizați" git add "pentru a urmări)
Deși oarecum confuz, dacă vom lua o clipă, vom vedea că, în mod implicit, lucrăm la o "ramură", numită "master". Apoi, avem un fișier netratat: index.html. Din acest motiv, suntem capabili să descifrăm faptul că Git nu este magic; trebuie să se spună ce fișiere să-i păstrezi, ca să spunem așa.
Curios de ce directoarele JavaScript și CSS nu sunt incluse în lista de fișiere netracked? Git urmărește fișiere, nu foldere. O tehnică comună, însă, de a include directoare goale într-o comitere, este să adăugați un fișier .gitignore la fiecare subdirector. Mai multe despre asta mai târziu!
Pentru a urmări fișierele, trebuie mai întâi să le adăugăm în zona de așteptare - sau să le puneți pe camion.
git adăugați index.html
Acum, dacă verificăm din nou starea, vom vedea:
Pe comandantul ramurii # # Comiteză inițială # # Modificări care urmează a fi angajate: # (utilizați "git rm - cached... "la unstage) fișier # # nou: index.html
Excelent; Git vizionează acest fișier pentru modificări. În acest caz, am adăugat doar un singur fișier. Dacă, în schimb, preferăm să adăugăm toate fișierele în zona de așteptare, putem folosi simbolul perioadei.
adăugați git .
Rețineți că camionul nu a plecat încă; am încărcat doar câteva cutii (sau fișiere) în spate. Pentru a realiza instantaneul și pentru a salva o copie a proiectului în starea lui curentă urmărită, trebuie efectuată o comitere.
git commit -m "Primul comite"
Mai sus, am creat o nouă comisie și am furnizat un mesaj de "Primul angajament". Cu aceasta, prima noastră comitere a fost finalizată, iar camionul a plecat în fabrica, cu o copie a proiectului în spate.
Pentru a vă verifica activitatea, utilizați o comandă nouă: "log."
git log commit 02c934fcaf3de7677273b74d8ad3ed5041066986 Autor: Jeffrey WayData: Mar 19 Dec 15:07:23 2012 -0500 Primul comitet
Perfect, a fost creat un comitet nou și, de asemenea, se pare că comitetul are un id de referință unic. Fișierul care a dispărut deocamdată.
Dacă, din nou, verificați starea.
git status
Deoarece nu s-au făcut modificări de la ultimul angajament, Git ne spune atât de mult:
# Pe bord ramură nimic să se angajeze (director de lucru curat)
Succes! 90% din utilizarea Git va urma acest ciclu.
Clătiți și repetați!
Să trecem la pasul următor. Ca un exemplu simplu, poate că dorim să includem în proiectul nostru o simplă foaie de stil de resetare. Vom scrie cele mai elementare (poate necorespunzătoare) de resetări.
/ * css / reset.css * / * margine: 0; umplutura: 0;
Acum, reveniți la index.html și includeți o referință la acest fișier:
Ca regulă de bază, dacă puteți descrie persoanei care se află lângă dvs. ce schimbare ați făcut la un proiect, atunci probabil merită o comitere. Se angajează adesea. Să facem asta acum; înapoi la Terminal!
adăugați git. git commit -m 'Adăugați și includeți foaia de stiluri de resetare.'
Când scrieți mesaje de comitere, este în general considerată a fi cea mai bună practică de a scrie în timpul prezent. Deci, "adăugați fișier" în loc de "fișier adăugat".
Repede spre mâine, iar acum șeful tău îți spune că nu vor să folosească fișierul tău simplu de resetare. În schimb, ar prefera să folosească foaia populară Normalize, de Nicolas Gallagher.
Nici o problema; cu Git, aceasta este o rezolvare ușoară. Să revenim la comitetul anterior și să efectuăm modificările necesare.
git revin HEAD
Cu Git, regula este "nu rescrie niciodată istoria".
Această comandă va anula toate modificările pe care le-ați efectuat în cel mai recent angajament. În esență, este o comitet care face exact opusul celui precedent. De ce să reveniți, în loc să întrerupeți în întregime comitetul? Din nou, pentru că urmărim cele mai bune practici. Cu Git, regula este "nu rescrie niciodată istoria". Reveniți la modificări, dar nu le ștergeți niciodată și le anulați.
După ce ați intrat, veți fi aduși pe un nou ecran cu textul, "Revert" Adăugați și includeți foaia de stiluri de resetare. " În acest moment, sunteți în modul Vi (deși aveți libertatea de a configura Git să utilizeze orice editor de cod dorit.) Pentru moment, mergeți cu valorile implicite, salvați și ieșiți. Realizați acest lucru tastând: wq (Write and Quit).
Și cu acea singură comandă, schimbările au fost reluate. Mergeți și verificați-vă pentru a vă asigura. Fișierul stil.css a fost eliminat și nu mai există o referință la foaia de stil în index.html. Aceasta este puterea lui Git! Pentru că am adoptat un stil de dezvoltare de a comite deseori, când este plasat în situații în care editările trebuie inversate, este nevoie doar de o singură comandă. Fără presiune Command-Z
pentru veșnicie!
În urma solicitării șefului, să actualizăm proiectul pentru a folosi Normalize.css, pe care l-am descărcat și plasat în css / normalize.css.
În index.html, trimiteți-l:
Și, în sfârșit, vom face schimbările.
adăugați git. git commit -m "Include Normalize în proiect"
Deși acest lucru a fost cu siguranță un exemplu simplu, imaginați-vă cât de utilă este această tehnică pentru modificări mai mari, care acoperă mai multe fișiere din aplicația dvs. Prin gruparea tuturor modificărilor conexe într-o singură comisie, atingem o flexibilitate și o siguranță maximă.
Ați fost vreodată la un moment dat într-un proiect, când vreți să experimentați o idee care poate sau nu să se transforme în aplicația finită? Deși este adevărat că puteți întoarce întotdeauna comitetul dacă lucrurile nu merg conform planului, este o idee mai inteligentă, dintr-o varietate de motive, în loc să legeți ramificarea.
Cea mai bună modalitate de a ilustra conceptul de ramuri Git este de a menționa Back to the Future 2.
Pe această notă, dacă sunteți un dezvoltator nerdy și nu ați urmărit trilogia Back to the Future, opriți ceea ce faceți și vizionați-i!
Continuând, amintiți-vă partea din "Înapoi în viitor" 2, după ce Marty și Doc se vor întoarce din 1985 în viitor, dar găsesc că totul este diferit? La întâlnirea la laboratorul lui Doc, acum distrus, Doc elaborează o diagramă care descrie modul în care, într-un anumit moment, "cronologia s-a înclinat în această tangentă, creând o alternativă din 1985". Acest lucru este la fel ca ramificarea!
Luați în considerare proiectul nostru demografic actual; acum, există o singură cronologie: o linie dreaptă. De îndată ce creăm o ramură pentru a lucra la ideea noastră, ne despărțim de această cronologie și creăm un altul. În acest moment, ambele termene există și pot conține propriile comitete respective, fără a interfera unul cu celălalt.
Cum este util acest lucru? Luați în considerare un ciclu de dezvoltare agil - unul în care dvs. sau echipa dvs. implementați actualizări de mai multe ori în fiecare săptămână. Dacă vă lipiți de abordarea "o singură cronologie", implementarea, de exemplu, a unei soluții simple de tipografie, nu ar fi posibilă până când nu ați terminat să lucrați și la ideea dvs. Cu ramificarea, cu toate acestea, avem flexibilitatea de a lua atâta timp cât avem nevoie de ideea noastră, în timp ce eliberăm încă ramura principală (cea implicită și cea primară) pentru implementarea tipo fix.
Pentru a crea o ramură nouă, executați:
Ideea sucursalei $ git $ git checkout idea
Alternativ, combinați aceste două comenzi într-una.
git checkout -b idee
Aceasta se referă la: crearea unei noi filiale, numită "idee" (înlocuiți-o pentru a fi mai descriptivă despre ceea ce lucrați, desigur) și treceți la ea.
Din acest moment, orice modificări și angajamente pe care le faceți nu vor fi menționate în cadrul sucursalei principale. Mergeți, încercați. Editați index.html și efectuați o mică modificare:
Ideea mea
Apoi, angajați-vă munca.
git adăugați index.html git commit -m "Primul proiect al ideii mele"
Am făcut deja primul nostru angajament în această nouă cronologie. Ideea noastră fictivă are nevoie de muncă, dar ne aflăm în drumul nostru! Dar, acum, un client a raportat doar o tipografie pe care trebuie să o rezolvăm cât mai curând posibil. Pentru că folosim în mod corect filiale, ne putem întoarce la ramura principală, vom repara tipografia și vom implementa.
git checkout master # fix tipo git adăugați index.html git commit -m 'Fix small typo' git push
Odată ce caracteristica ideii este terminată, este timpul să fuzionăm înapoi în ramura principală.
git checkout master git idee de îmbinare
Dacă totul merge conform planului, sucursala dvs. de funcții va fi reușită să fie reluată în ramura principală, rezolvând cea de-a doua cronologie alternativă din 1985!
Acestea fiind spuse, veți întâmpina, fără îndoială, situații, când Git se pare că își plantează picioarele în pământ și refuză să continue așa cum este cerut. În aceste cazuri, Git nu este un ticălos fără nici un motiv! Cel mai probabil, problema se referă la un conflict care mai întâi trebuie rezolvat, înainte ca Git să poată continua. Imaginați-vă că încercați să fuzionați un fișier înapoi în ramura principală; singura problemă este că, deoarece sucursala a fost creată, fișierul a fost editat atât în ramura de caracteristici, cât și în maestru. În situații precum acest lucru, cum ar putea Git să știe care versiune a fișierului ar trebui să preceadă, atunci când se amestecă cele două? Nu, și asta numim un conflict.
Fuzionarea automată index.html CONFLICT (conținut): conflictul de fuziune în index.html Amestecarea automată a eșuat; remediați conflictele și apoi angajați rezultatul.
Înainte ca Git să poată continua, trebuie să rezolvați conflictul, editând index.html.
Probabil că va veni un punct atunci când stabiliți că este mai bine să nu urmăriți anumite tipuri de fișiere cu Git. Exemplele ar putea include aplicația common .DS_STORE (cu care utilizatorii de Mac vor fi familiarizați), să construiască directoare și să compileze temporar active.
Destul de simplu, Git, prin intermediul unui fișier .gitignore, ne permite să ignorăm anumite tipuri de fișiere. Pentru a utiliza acest lucru, creați un nou fișier .gitignore în root (dar fără a se limita la) al proiectului dvs. În cadrul acestuia, furnizați o listă de fișiere sau tipuri de fișiere pe care să le ignorați. Iată un exemplu de bază:
.Construiți DS_STORE / * .log * .sql * .exe
GitHub face posibilă codarea socială.
Până acum, ați învățat cum să vă angajați codul local. Dar, cum pot fi schimbate aceste modificări fie cu echipa dvs., fie cu restul lumii? Introduceți GitHub.
GitHub vă permite să vă împărtășiți codul cu lumea. Este cea mai mare comunitate open source existenta.
După ce v-ați înscris pentru un nou cont la github.com, va trebui să urmați câțiva pași pentru a genera o cheie specială, pentru a vă asocia computerul cu contul dvs. GitHub. Nu-ți face griji; dacă urmați pașii, nu trebuie să aveți probleme.
În acest moment, putem crea un nou depozit și să împingem micul nostru proiect, să îl împărtășim cu lumea. După ce v-ați conectat, faceți clic pe butonul "Depozit nou", dați repo numele dvs. și faceți clic pe "Creați un depozit". Apoi, veți primi câteva comenzi care pot fi lipite în Terminal. Întrucât avem deja un repo existent, avem nevoie de a doua opțiune:
git adăugați la distanță origine https://github.com/USERNAME/project.git git push -u master de origine
Acest lucru îl instruiește pe Git să adauge noul depozit la distanță și să îl numească "origine". Apoi, împingem ramura principală (nu ideea) la telecomandă cu aliasul "origine".
Asta e! Întoarceți-vă la browser, reîmprospătați pagina și veți găsi noul depozit nou, așteptând să fie împărtășite cu restul lumii.
Atunci când alți membri ai echipei dvs. doresc să tragă modificările pe care le-ați făcut, trebuie doar să ruleze:
git trageți
Această comandă va atrage ultimele actualizări care au fost împinse la GitHub! În plus față de codul de partajare, GitHub oferă de asemenea posibilitatea de a urmări și de a contribui la proiectele populare open source, precum și un tracker de probleme pentru bug-uri și cereri de caracteristici. Este codarea socială la cele mai bune!
Deși am zgâriat doar suprafața a ceea ce este capabil de Git, adevărul este că, din nou, pentru 80% din utilizarea Git, tehnicile menționate în acest articol vor fi suficiente. Creați o ramură de funcții, scrieți un cod, adăugați-o în zona de așteptare și comiteți-o cu un mesaj. Când este gata, mergeți-l înapoi în ramura master și desfășurați! Apoi clătiți și repetați!
Nu uitați: când este stomac, StackOverflow este cel mai bun prieten al tău. Oricare ar fi problema, alții s-au aflat în aceeași situație. Căutați acolo mai întâi.
TryGit oferă o experiență interactivă pentru învățarea Git.