Cum să utilizați filialele Git pentru a structura proiectul dvs. de programare
Filmele și televiziunea descriu programarea ca o activitate frenetică Hollywood Hacks: Cel mai bun și cel mai rău hacking în filme Hollywood Hacks: Cel mai bun și cel mai rău hacking în filme Hollywood și hacking-ul nu se înțelege. În timp ce hacking-ul real-life este greu, hacking-ul filmului implică adesea pounding departe pe o tastatură ca degetele tale sunt în stil. Citeste mai mult . Timerul unei bombe se numără în jos, iar adversarul groaznic, care a fost o povară până la acel moment, lucrează feveric pe un laptop. Codul zboară pe ecran până când atinge ultima cheie de returnare cu o satisfacție trăncăni! Timerul se oprește și totul este bine din lume. Dar programarea nu este așa. Acesta include documente de proiectare, machete UI și recenzii de cod. Și mai mult decât orice implică încercarea și eroarea, mai ales dacă sunteți începător (ca mine).
Acum, ați putea fi deja convins de valoarea păstrării proiectelor de codare în controlul surselor Ce este Git și de ce ar trebui să utilizați controlul versiunii Dacă sunteți dezvoltator Ce este Git și de ce ar trebui să utilizați controlul versiunii Dacă sunteți dezvoltator În calitate de dezvoltatori web, o mare parte a timpului pe care avem tendința de a lucra pe site-urile de dezvoltare locală, atunci încărcați totul atunci când terminăm. Acest lucru este bine când este doar tine și schimbările sunt mici, ... Citește mai mult. Angajarea tuturor acestor încercări și erori în depozitul dvs. va duce la un proiect mare și neclar, cu multe revizuiri. Majoritatea comitetelor pe care le faci vor conține lucruri care sunt sparte, deci de ce să le salvezi? Git ramură caracteristica poate ajuta la păstrarea acestui cod dezordonat departe de lucrurile pe care le cunoașteți.
În acest articol, vom analiza ce înseamnă divizarea codului dvs., cum se face, și modalitățile de a gestiona actualizările “principal” ramură.
Crearea unei filiale Git
Am învățat de la introducerea noastră la controlul sursei Gestionați versiunea fișierului ca un programator cu Git Gestionați versiunea dvs. de fișier ca un programator Cu Git Programatorii au creat sisteme de control al versiunilor (VCS) pentru a rezolva problemele de control al versiunilor de fișiere. Să ne uităm la elementele de bază ale controlului versiunii folosind astăzi sistemul de top, Git. Citiți mai mult că puteți crea un nou depozit cu următoarea comandă într-un terminal:
git init
Când faceți acest lucru, acesta creează un director ascuns în calea curentă, numit “.git.” Dacă nu îl puteți vedea, consultați câteva dintre articolele noastre anterioare privind vizualizarea ascunsă Modul simplu de a afișa fișiere și foldere ascunse în Windows 10, 8.1 și 7 Modul simplu de a afișa fișiere și foldere ascunse în Windows 10, 8.1 și 7 Trebuie să vedeți fișiere și foldere ascunse în Windows? Iată cum să le arătăm în Windows 10, 8.1 și 7, astfel încât nimic să nu fie ascuns de dvs. Citiți mai multe fișiere Ascundeți și găsiți orice fișier pe Mac OS X Ascundeți și găsiți orice fișier pe Mac OS X Nu există nici un mod simplu de a ascunde sau dezvălui rapid fișiere ascunse pe Mac OS X, așa cum există pe Windows - dar este posibil. Citeste mai mult . Acest director conține toate informațiile necesare pentru păstrarea istoricului revizuirilor fișierelor dvs. După ce ați setat managerul de fișiere să afișeze fișierele ascunse, puteți deschide dosarul .git și puteți vedea un număr de subdirectoare. Se numește unul dintre acestea “ref” (arătat în imaginea de mai jos) și a lui “Capete” sub-directorul conține înregistrări pentru toate sucursalele din proiectul dvs. La început veți avea doar unul, numit “maestru.”
Directorul refs păstrează o evidență a ramurii, dar nu sucursala însăși. Cel puțin, nu sucursala pe care o ai utilizarea curentă. Aceste fișiere sunt păstrate în directorul de lucru (“~ / Temp / post-programare-git-ramură” în exemplul de mai sus), astfel încât să le puteți accesa în mod normal. Făcând exact acest lucru, vom crea primul nostru fișier (numit “Primul-fisier.txt”) în directorul de lucru, adică. in afara directorul .git. Verificați acest lucru folosind comenzile de încredere de la articolul anterior de intro la git Gestionați versiunea dvs. de fișier ca un programator cu Git Gestionați versiunea dvs. de fișier ca un programator Cu Git Programatorii au creat sisteme de control al versiunilor (VCS) pentru a rezolva problemele de control al versiunilor de fișiere. Să ne uităm la elementele de bază ale controlului versiunii folosind astăzi sistemul de top, Git. Citeste mai mult :
Putem vedea acum că directorul de lucru are două fișiere, unul pe care l-am angajat și unul creat automat de git (conține mesajul de comitet pe care tocmai l-am introdus).
Acum, să creăm o nouă filială git numită “testarea”:
testarea ramurii git
Verificarea ramurii și lucrul în ea
Putem emite comanda de mai sus fără nume pentru a obține o listă cu toate ramurile, precum și pe cea pe care o folosim în prezent (adică care este “verificat”):
Acum, dacă vom examina structura directorului, vom vedea “.GIT / capete / ref” acum are două fișiere, câte unul pentru fiecare “maestru” și “testarea.”
Fiecare dintre acestea este o listă a comitetelor care cuprind ramura. De exemplu, dacă examinăm “maestru” ramură cu “git log” comanda, putem vedea o linie pentru fiecare dintre comitetele făcute acelei sucursale.
Procesul de “verificat” o ramură înseamnă că modificările pe care le faceți la fișiere vor face parte din acea ramură, dar nu și alte ramuri. De exemplu, să presupunem că verificăm filiala de testare git cu următoarea comandă:
test git checkout
Apoi, adăugăm o linie de text în fișierul first-file.txt, bineînțeles comitând-o ulterior. Dacă treceți înapoi la sucursala principală, veți găsi că fișierul este încă necompletat ( pisică comanda afișează conținutul unui fișier în terminal):
Dar revenirea la “testarea” ramură, fișierul are încă textul adăugat:
Dar tot ceea ce vedem vreodată în directorul propriu este fișierul unic “Primul-fisier.txt.” Unde sunt aceste două versiuni alternative ale aceluiași fișier? Directorul .git contabilizează aceste modificări, dar nu în modul în care vă puteți aștepta.
Cum Git stochează lucrurile
Dacă ar trebui să examinați un depozit pentru alte sisteme de control al versiunii, cum ar fi Subversion, veți găsi că păstrează câte o copie per revizie pentru fiecare fișier individual. Aceasta înseamnă că dacă aveți un depozit al unui fișier, creați apoi două sucursale, repo-ul conține două copii diferite ale acelui fișier. De fapt, folosiți de fapt “copia svn” ca comandă pentru a crea o sucursală în Subversion! Pe de altă parte, git operează pe conceptul de “schimbări.”
Rezultatul celor de mai sus ne spune întregul conținut din “trompă” (Versiunea SVN a “maestru”) a fost copiat. O privire într-un manager de fișiere confirmă acest lucru:
“.GIT / obiecte” directorul este ceea ce deține toate aceste mici modificări, și fiecare este urmărită cu un ID. De exemplu, în imaginea de mai jos, veți vedea fișiere cu nume de stil lung. Fiecare se află într-un dosar numit cu două caractere hexazecimale (8c și 8 D de mai jos).
Împreună, aceste nume de dosare și fișiere constituie ID-ul pentru o anumită modificare (de fapt un hash SHA1). Puteți explora conținutul acestora utilizând git cat-file comanda. Pe baza datelor modificate, putem vedea începutul “8 D” a venit primul și nu arată nimic. În timp ce cel care începe “8c” conține linia de text pe care am adăugat-o în fișierul din “testarea” ramură.
Takeaway este acele sucursale git (inclusiv implicit “maestru”) nu sunt separate “dosare” conținând copii ale fișierelor. Mai degrabă, ele sunt liste de modificări aduse fișierelor în timp. Acest lucru este mai eficient din punct de vedere al stocării, dar rezultatul este același. Orice faci (o pauză?) Într-o filieră git rămâne acolo până când o fuzionezi.
Strategii pentru rambursarea în filiala principală (pentru a șterge sau a nu șterge?)
Să presupunem că aveți un proiect existent cu un număr de fișiere, pe care apoi l-ați format “testarea,” și a făcut unele lucruri pe ea. Acum doriți să aduceți aceste modificări înapoi “maestru” ramură. Puteți face cu următoarele din “maestru” ramură:
git teste de îmbinare
Cu condiția să nu existe conflicte, Schimbare constând în noul text va fi aplicat la “maestru.” Rezultatul este “Primul-fisier.txt” vor fi identice în ambele ramuri. Cu toate acestea, nu au existat niciodată alternativ versiuni a dosarului.
Acum vine întrebarea: ce să facem cu ramura? Există două strategii comune de abordare a ramurilor.
- Unul este de a păstra o ramură git ca “testarea” pentru a juca înăuntru (prezentat mai sus). Încercați unele lucruri și, dacă le puteți face să funcționeze, îmbinați schimbările înapoi “maestru.” Apoi, puteți să terminați lucrul pe acea ramură sau chiar să vă descurcați complet. Asta înseamnă “maestru” este cea mai stabilă versiune din cod, deoarece ar trebui să conțină doar lucruri pe care le știi să le lucreze. De asemenea, vă puteți gândi la această abordare ca la folosire “filiale.” Acest lucru se datorează faptului că scopul acestora este de a rafina una (sau mai multe) adăugiri specifice la cod.
- O altă abordare este de a vă face toată munca principală în “maestru” ramură, făcând comiterea de-a lungul drumului. Odată ce sunteți mulțumit de funcționalitate, creați o filială în cadrul acesteia, pe care o veți face pentru a rezolva erorile și pentru a face asemenea lucruri. Acest lucru are ca rezultat mai mult de a “ramura de eliberare” (prezentate mai jos), pe măsură ce se termină cu lansarea. De asemenea, înseamnă și dvs. “maestru” ramură este de obicei cea mai instabilă versiune din codul dvs..
Utilizați oricare metodă este cea mai bună pentru dvs.
Prima abordare aici este mai frecventă atunci când lucrați cu git. Celelalte caracteristici (în special etichetele) îl fac ușor să marcheze un instantaneu particular al codului ca “grajd.” De asemenea, se oferă mai bine proiectelor de colaborare mai mari. Dar când lucrați la propriile proiecte personale, nu ezitați să utilizați oricare dintre acestea vă face cel mai mult sens. Lucrul minunat în ceea ce privește utilizarea git-ului este că vă captați toate modificările, astfel încât să puteți întotdeauna să vă întoarceți și să găsiți ceva. Și organizarea proiectului cu sucursale git face acest lucru mai ușor de făcut.
Cum abordați sucursalele în proiectele dvs.? Îi folosești pentru a experimenta, apoi a le distruge după aceea? Sau reprezintă o istorie detaliată a muncii dvs. asupra proiectului?
Spuneți-ne mai jos în comentariile dvs. dacă aveți modalități inteligente de a vă ocupa de sucursalele din proiectele dvs. de git!