Tá múnla rathúil na mbrainsí i Git

A fhios agam conas é a úsáid Is Git tábhachtach, agus áirítear leis seo a chothabháil bogearraí timpeallacht forbartha comhoibritheach soláimhsithe.

creidmheasanna

Tá sé seo Post leagan Portaingéile bunaidh, i mBéarla, “Tá samhail Branching Git rathúil“, údaraithe go cuí ag an údar, Vincent Driessen. Go raibh maith agat fear!

Maidir le saincheisteanna teicniúla, Bhí roinnt focail coinnithe ghnó i mBéarla. Rinne mé a áirithiú Úrnuacht ar an téacs, ach Admhaím mé go raibh mé chun coigeartuithe tuiscint a éascú in ár dteanga a dhéanamh (PT-BR). Tá fáilte roimh aon ceartúcháin nó moladh le haghaidh feabhsúcháin i aistriúchán.

réamhrá

Ní hé seo an post múineadh an úsáid Git. Más é seo cad is gá, Mé le fios ag cur Féach ar Manual dhéanamh Git. Ná go bhfuil sé ár sprioc chun a thaispeáint conas a dhéanamh ar versioning bogearraí, sa chás seo, feic versioning Semantic.

Seo an togra a bhainistiú comhoibriú foirne i versioning bogearraí. Tá a fhios agat nuair a tá tú ríomhchláraitheoirí éagsúla “stirring” sa chód foinse céanna? Tá sé seo tábhachtach d'fhorbairt chun dlús, ach is féidir a ghiniúint tinneas cinn ollmhór (caillteanas agus athoibriú) mura bhfuil aon smacht. Chun cosc ​​a chur forbróir ó overwriting obair a chéile agus a chinntiú fhorbairt go comhleanúnach agus eagraithe, coinbhleachtaí a íoslaghdú agus a bhainistiú scaoileadh bogearraí, úsáidimid Git agus múnla brainsí a leanúint.

brainsí Model

Sa phost seo i láthair mé an tsamhail forbartha úsáidtear mé i roinnt de mo tionscadail (araon ag an obair agus príobháideacha) in aice le 1 bliain ó shin, agus tá sé ag éirí thar cionn. Tamall ó shin bhí mé a scríobh mar gheall air, ach ní raibh sé an t-am atá ar fáil, go dtí seo. Ní bheidh mé ag caint faoi shonraí an tionscadail, díreach faoi straitéisí brainsí agus bainistíocht scaoileadh.

An tsamhail ní hamháin séala git mar uirlis chun versioning dár cód fad foinse. (teagmhasach, má tá suim agat i Git, ár gcuideachta gitpri go Soláthraíonn, fíor-ama, cuid anailís sonraí iontach a leas iomlán a bhaint innealtóireacht bogearraí)

Go git?

Le haghaidh plé críochnúil ar na buntáistí agus na míbhuntáistí de Git i gcomparáid le córais rialaithe foinse láraithe, feic a gréasáin. Tá iontach “cogadh” timpeall go. mar forbróir, Is fearr liom Git maidir le gach huirlisí atá ann cheana eile sa lá atá inniu. Git gan amhras d'athraigh an mbealach a cheapann forbróirí faoi a dhéanamh chumasadh nó a chruthú géaga. Thiocfaidh mé as an saol clasaiceach CVS / Subversion, i gcás chumasc / Branching Tá sé rud éigin a dhéanann tú ach uair amháin ar feadh tamaill agus is cosúil i gcónaí beag scary (“Beware coinbhleachtaí chumasadh, siad greim agat!”).

Anois Git na gníomhartha seo [chumasc / Branching] Tá siad an-simplí agus léiríonn cuid mhór dár ghnáthamh oibre, Creidim. mar shampla, no leabhar CSV / Subversion, Branching agus chumasc Tá siad a cúpláileadh den chéad uair amháin i gcaibidlí eile (d'úsáideoirí chun cinn), cé in aon leabhar ar Git, tá sé seo le feiceáil sa chaibidil 3 (bunúsach).

Mar thoradh ar a simplíocht agus nádúr athchleachtach, Branching agus chumasc Tá siad aon rud níos mó a bheith eaglach. i ndáiríre, Ba chóir go mbeadh na huirlisí rialú foinsí cabhrúchumasadh agus a chruthú géaga níos mó ná aon rud eile.

caint Enough, lig an múnla forbartha. Is é an tsamhail go mbeidh mé i láthair anseo go bunúsach rud ar bith níos mó ná sraith de nósanna imeachta nach mór do gach ball foirne a leanúint d'fhonn a fháil ar phróiseas forbartha bogearraí bainistithe.

díláraithe, ach láraithe

An thus stór a úsáid againn agus go n-oibríonn go han-mhaith leis an múnla seo Branching Tá sé comhdhéanta de stór lárnach. Tabhair faoi deara go bhfuil an stór ach “mheas” lárnach (toisc go bhfuil Git a Dvcs [Dáiltear Córais Rialaithe Leagan], i bhfocail eile, nach bhfuil aon rud den sórt sin mar stór lárnach ar leibhéal teicniúil). Déanfaimid tharchur chuig an stór mar tionscnaimh, ós rud é go is ainm don taithí ag gach duine a úsáideann Git.

Tá gach forbróir pulls agus pushes ar tionscnaimh. Ach thar an gcaidreamh bhrú-tarraingt le haghaidh láraithe [tionscnaimh], is féidir le gach forbróir a ghabháil freisin [tarraingt] Athruithe do piaraí eile chun foirm Subteams. mar shampla, Is féidir é seo a bheith úsáideach a bheith ag obair le beirt nó níos mó d'fhorbróirí ar feidhmiúlacht mór nua, sheoladh roimhe [ag brú] an obair atá ar siúl do tionscnaimh. Sa thuas, tá fo-foirne de Alice agus Bob, Alice e David, e Clair agus David.

Go teicniúil, ciallaíonn sé seo rud ar bith níos mó ná Alice Shainigh Git iargúlta darb ainm Bob, dírithe ar stór Bob, agus a mhalairt de dhóigh.

Na réimsí is mó

sa chúl, Tá an tsamhail forbartha spreag go leor ag samhlacha atá ann cheana amuigh ansin. Tá an stór lárnach dá bhrainse [brainsí] as a saol endless:

  • máistir
  • fhorbairt

An máistir brainse i tionscnaimh Ba chóir go mbeadh eolas do gach úsáideoir Git. comhthreomhar le máistir brainse, tá ceann eile géaga ar a dtugtar fhorbairt.

a mheasamar a bheith tionscnaimh / máistir mar an brainse is mó i gcás an fhoinse CEANN Léiríonn gcónaí stáit tháirgeadh-réidh [réidh le haghaidh táirgeadh].

a mheasamar a bheith tionscnaimh / a fhorbairt mar an géaga i gcás an príomh-fhoinse CEANN Léiríonn gcónaí ar staid leis na hathruithe is déanaí forbartha le seachadadh sa chéad eisiúint eile. Bheadh ​​roinnt ghlaoch air “géaga comhtháthú”. Sin an áit a dtarlóidh na tógálacha is sinister.

Nuair a bheidh an cód foinse sa brainse a fhorbairt sroicheann pointe cobhsaí agus tá sé réidh chun a scaoileadh [scaoileadh], Ní mór gach athrú a chumasc [chomhcheangal] chun tacú leis an máistir brainse agus ansin marcáilte le roinnt leagan [scaoileadh]. Cén chaoi a ndéantar sin go mion, Tá tuilleadh plé ar.

Mar sin, gach uair na hathruithe a ionchorprú [chomhcheangal] ar ais go dtí máistir, Tá sé a ghintear ar leagan nua [scaoileadh], de réir sainmhínithe. Déanaimid iarracht a bheith an-dian faoi, ansin, teoiriciúil, D'fhéadfá a úsáid fiú script Hook Git a chruthú go huathoibríoch agus lenár n-iarratas a sheoladh chuig an bhfreastalaí táirgeachta aon uair a bhfuil tiomantas no máistir.

brainsí cúnta

Chomh maith leis an brainsí is mó, máistir agus fhorbairt, Úsáideann ár n-eiseamláir a fhorbairt ar éagsúlacht na brainsí tacaíochta chun cuidiú le forbairt comhuaineach idir baill foirne, cad 1) Éascaíonn an rianú gnéithe nua [bailte fearainn], 2) ullmhaíonn do sheachadadh ar leagan nua [scaoileadh] agus 3) Cabhraíonn sé a shocrú go tapa flaws i dtáirgeadh [hotfix]. Murab ionann agus brainsí is mó, Estes brainsí Tá saolré ghearr, toisc go mbeidh sé a chur as oifig sa deireadh.

Na cineálacha éagsúla brainsí [cúnta] Is féidir linn a úsáid, go bhfuil siad:

  • brainsí Gné
  • brainsí Scaoileadh
  • brainsí hotfix

Gach ceann de na brainsí Tá ar chúis ar leith agus tá sé faoi cheangal ag na rialacha dochta, ionas go mbeidh, brainsí is féidir acmhainn géaga agus brainsí Ba chóir iad a chumasc [chomhcheangal] gcuid spriocanna. Beidh le feiceáil ar gach [brainsí] i awhile.

Ó thaobh teicniúil, sin brainsí Níl siad a mheas “speisialta”. Gach cineál géaga Tá sé tá sé rangaithe ag an mbealach a úsáidimid. deireadh thiar, Tá siad ach simplí brainsí do Old Git.

brainsí Gné

[Gnéithe = Eilimintí / feidhmiúlacht]

– Is féidir leat a brainse [géaga] ó:
fhorbairt
– Tá sé mingle [chumasadh] arís:
fhorbairt
– Ainmniú choinbhinsiún an géaga:
rud ar bith, ach amháin máistir, fhorbairt, release- *, nó hotfix- *

an brainsí gné (nó uaireanta ar a dtugtar brainsí topaic) Déantar iad a úsáid chun gnéithe / feidhmiúlacht nua a fhorbairt le haghaidh scaoileadh amach anseo nó eile. Nuair a bheidh ag tosú le forbairt ar gné, is féidir leis an scaoileadh sprioc ina mbeidh an ghné seo a ionchorprú bheith go maith anaithnid ag an bpointe.

An croílár ar brainsí gné tá sé ann cé gné ag forbairt, ach beidh sé a ionchorprú sa deireadh [chomhcheangal] ar ais go dtí fhorbairt (a chur leis go buan ar an nua gné an chéad cheann eile scaoileadh) nó a chaitheamh i leataobh (i gcás taithí nár éirigh).

brainsí Gné de ghnáth ann ach amháin sa stór fhorbairt, ní i tionscnaimh.

Ag cruthú brainsí gné

$ Seiceáil git -b myfeature fhorbairt
# Switched to a new branch "myfeature"

Ionchorpraítear leo gné críochnaithe ar fhorbairt

gnéithe chun críche Is féidir a chumasc[chomhcheangal] le brainse a fhorbairt a chur orthu go buan leis an chéad cheann eile scaoileadh.

$ Seiceáil git a fhorbairt
# Aistrigh go brainse 'a fhorbairt'
$ git dul --no-myfeature ff
# Thabhairt cothrom le dáta ea1b82a..05e9557
# (Achoimre ar na hathruithe)
# $ brainse git -d myfeature
# Scriosta myfeature brainse (ba 05e9557).
$ tionscnaimh bhrú git a fhorbairt

A bratach –no-ff Cúiseanna sé an merge [chumasadh] a chruthú i gcónaí rud nua tiomantas, fiú amháin más rud é go bhféadfaí an t-merge a dhéanamh le aghaidh go tapa [ff]. Seachnaíonn sé seo chailliúint faisnéis maidir le stair an dá haire go bhfuil gné brainse, ghrúpáil go léir tá cion déanta Bhí siad seo a leanas go dtí gné. Déan comparáid idir:

Gan chás deiridh [figiúr thuas], go bhfuil sé dodhéanta a fheiceáil ón stair Git cé acu de tá cion déanta Bhí siad i bhfeidhm taobh istigh de gné; ba mhaith leat a léamh go láimh ar fad na teachtaireachtaí logáil. aisiompú ar gné fad (i bhfocail eile, grúpa tá cion déanta), Is mór an tinneas cinn fíor sa staid sin, cé go bhfuil sé déanta go héasca má tá an bhratach –no-ff Tá sé in úsáid.

Sim, Beidh sé seo a chruthú cúpla rudaí níos tá cion déanta (folamh), ach tá an gnóthachan i bhfad níos mó ná an costas.

brainsí Scaoileadh

[Scaoileadh = scaoileadh / a sheachadadh / scaoileadh]

– Is féidir leat a brainse [géaga] ó:
fhorbairt
– Tá sé mingle [chumasadh] arís:
fhorbairt agus máistir
– Ainmniú choinbhinsiún an géaga:
release- *

an brainsí Press cabhrú i ullmhú leagan nua táirgeachta [scaoileadh táirgthe]. Cuireann siad ar chumas duit a chur ponc an i nóiméad deireanach ar. ina theannta sin, cheadaíonn siad ceartúcháin bheaga bugs agus sainmhíniú ar meta-sonraí ar feadh scaoileadh (uimhir leagan, dátaí tiomsú, srl). De réir a dhéanamh an obair seo go léir i brainse scaoileadh, an brainse a fhorbairt Tá glanta a fháil bailte fearainn an mór eile scaoileadh [leagan].

An nóiméad eochair do chruthú nua brainse scaoileadh Branching de fhorbairt Is nuair a an fhorbairt tá sé cheana féin (beagnach) rud a léiríonn an stát atá ag teastáil ar an nua scaoileadh [leagan]. gach bailte fearainn iarrthóirí le haghaidh scaoileadh a bheidh le tógáil a bheith corpraithe [chumasadh] go fhorbairt anois. cheana bailte fearainn os comhair scaoileadh Ba chóir sa todhchaí a bheith ag súil seo chugainn scaoileadh [leagan].

Tá sé ach an tús a brainse scaoileadh an chéad cheann eile scaoileadh a fhaigheann uimhir leagain – tráth nach luaithe. Go dtí sin, an brainse a fhorbairt a léirítear ar an “scaoileadh chugainn” [leagan eile], ach níl sé soiléir an seo “leagan eile” Beidh sa deireadh 0.3 nó 1.0, go dtí an brainse scaoileadh thosaíonn. Tá an cinneadh a glacadh ag tús brainse scaoileadh agus tá sé ar siúl ag na rialacha an tionscadail maidir le versioning [Mé le fios a fheiceáil faoi “versioning Semantic“].

Ag cruthú brainse scaoileadh

an brainsí Press Tá siad a cruthaíodh ó brainse a fhorbairt. mar shampla, rá go bhfuil an leagan 1.1.5 Is é an leagan reatha táirgthe agus tá go maith scaoileadh ag teacht. Tá an staid fhorbairt tá sé réidh le haghaidh “leagan eile” [scaoileadh chugainn] agus shocraigh muid go mbeadh sé seo a bheith ar an leagan 1.2 (in ionad 1.1.6 nó 2.0). ansin, ramificamos dúinn agus a chur orainn an brainse scaoileadh ainm a léiríonn an uimhir leagain nua:

$ Seiceáil git -scaoileadh b-1.2 fhorbairt
# Switched to a new branch "release-1.2"
$ ./bump-leagan.sH 1.2
# Comhaid modhnaithe go rathúil, Leagan bumped go 1.2.
$ git tiomantas -a -m "Bumped version number to 1.2"
# [scaoileadh-1.2 74d9424] Bumped uimhir leagain a 1.2
# 1 comhaid a athrú, 1 insertions(+), 1 scriosadh(-)

Tar éis a chruthú nua a géaga agus rochtain a fháil air, bumped muid an uimhir leagain. anseo, bump-version.sh Is script bhlaosc go bhfuil athruithe roinnt comhaid cóip oibre chun an leagan nua. (Is féidir seo, soiléir, a bheith ina athrú láimhe – is é an pointe go n-athraíonn roinnt comhaid.) ansin, Tá sé déanta tiomantas an uimhir leagan modhnaithe.

seo nua géaga D'fhéadfadh a bheith ann ar feadh tamaill, go dtí an scaoileadh Tá scaoileadh ar deireadh. Le linn na tréimhse, Is féidir le bug fixes a chur i bhfeidhm sa géaga (in ionad brainse a fhorbairt). An Chomh maith leis nua mór bailte fearainn anseo tá cosc ​​dian. Ba chóir iad a chumasc [chomhcheangal] i fhorbairt agus, mar sin, fanacht ar an mór eile scaoileadh.

Críochnú brainse scaoileadh

nuair a bheidh an brainse scaoileadh Tá sé réidh le bheith ina leagan fíor, Ní mór roinnt gníomhaíochtaí a bheidh le déanamh. ar dtús, an brainse scaoileadh Tá sé chumasc isteach máistir (ós rud é gach tiomantas no máistir Is leagan nua de réir sainmhínithe, cuimhnigh). ansin, go tiomantas no máistir Ba chóir é a mharcáil le haghaidh tagartha éasca sa todhchaí don stair leagan. ar deireadh, athruithe a rinneadh i brainse scaoileadh Caithfidh siad a chumasc [chomhcheangal] arís go fhorbairt, ionas go mbeidh scaoileadh sa todhchaí freisin ar na bug fixes.

An chéad dá chéim i Git:

$ máistir Seiceáil git
# Aistrigh go brainse 'máistir'
$ git dul --no-scaoileadh ff-1.2
# Cumaisc a rinne Athchúrsach.
# (Achoimre ar na hathruithe)
$ tag git -a 1.2

An scaoileadh Is críochnaithe agus le bheith tagartha sa todhchaí anois.

ráiteas: Is féidir leat é a úsáid freisin ar na bratacha -s nó -u a shíniú ar do chlib cryptographically.

A choinneáil ar na hathruithe a rinneadh brainse scaoileadh, ní mór dúinn a rolladh ar ais go dtí fhorbairt. Gan Git:

$ Seiceáil git a fhorbairt
# Aistrigh go brainse 'a fhorbairt'
$ git dul --no-scaoileadh ff-1.2
# Cumaisc a rinne Athchúrsach.
# (Achoimre ar na hathruithe)

D'fhéadfadh sé seo mar thoradh ar chéim coimhlint chumasadh (is dócha dul, aon uair amháin athraíonn muid an uimhir leagain). Más rud é mar sin, a dheisiú agus a chur tiomantas.

anois, i ndáiríre dar críoch muid ag, an brainse scaoileadh D'fhéadfadh sé a chur as oifig, ós rud é a thuilleadh gá dúinn é:

$ git brainse -d scaoileadh-1.2
# Scriosta brainse scaoileadh-1.2 (ba ff452fe).

brainsí hotfix

– Is féidir leat a brainse [géaga] ó:
máistir
– Tá sé mingle [chumasadh] arís:
fhorbairt agus máistir
– Ainmniú choinbhinsiún an géaga:
hotfix- *

an brainsí hotfix Tá siad an-chosúil leis brainsí scaoileadh, tá siad Tá sé i gceist freisin a ullmhú leagan nua táirgeachta, cé go neamhphleanáilte. Thagann siad chun cinn as an ngá a bheith ag gníomhú díreach tar éis staid gan iarraidh leagan táirgeachta [in úsáid]. Nuair a tharlaíonn earráid chriticiúil i leagan táirgeachta, Ní mór é a aghaidh a thabhairt láithreach, ansin amháin brainse hotfix Is féidir é a bhaint as an chlib go marcanna an leagan táirgeachta atá ann i máistir brainse.

Is é an bunúsach go bhfuil obair na mball foirne (no brainse a fhorbairt) Is féidir le leanúint ar aghaidh, cé go bhfuil duine eile ag ullmhú ceartú tapa teip i dtáirgeadh.

Cruthú an brainse hotfix

an brainsí hotfix Tá siad a cruthaíodh ó máistir brainse. mar shampla, ag glacadh leis go bhfuil an leagan 1.2 Is é an leagan reatha de scaoileadh ag rith a tháirgeadh agus cuireann fadhbanna mar gheall ar earráid mhór. athruithe i fhorbairt ag fágáil an éagobhsaí fós. Is féidir linn brainse ansin amháin brainse hotfix agus tús a chur leis an fhadhb a réiteach:

$ Seiceáil git -b hotfix-1.2.1 máistir
# Switched to a new branch "hotfix-1.2.1"
$ ./bump-leagan.sH 1.2.1
# Comhaid modhnaithe go rathúil, Leagan bumped go 1.2.1.
$ git tiomantas -a -m "Bumped version number to 1.2.1"
# [hotfix-1.2.1 41e61bb] Bumped uimhir leagain a 1.2.1
# 1 comhaid a athrú, 1 insertions(+), 1 scriosadh(-)

Ná déan dearmad a athrú ar an uimhir leagain i ndiaidh Branching!

ansin, an earráid a agus a chur ar an tiomantas ceartú i gceann amháin nó níos mó tiomantas scartha.

$ git tiomantas -m "Fixed severe production problem"
# [hotfix-1.2.1 abbe5d6] fadhb táirgthe Seasta dian
# 5 comhaid a athrú, 32 insertions(+), 17 scriosadh(-)

Thabhairt chun críche brainse hotfix

nuair a chríochnófar, an bugfix Ní mór duit a bheith chumasc ar ais go dtí máistir, ach freisin ní mór a bheith corpraithe ar ais isteach fhorbairt, a chinntiú go bhfuil an bugfix Tá sé san áireamh freisin i scaoileadh chugainn. Tá sé seo cosúil go leor leis an mbealach brainsí scaoileadh tá siad tugtha chun críche.

ar dtús, thabhairt cothrom le dáta máistir e chlib a scaoileadh [seiceáil an tsamhraidh]:

$ máistir Seiceáil git
# Aistrigh go brainse 'máistir'
$ git dul --no-hotfix ff-1.2.1
# Cumaisc a rinne Athchúrsach.
# (Achoimre ar na hathruithe)
$ tag git -a 1.2.1

ráiteas: Is féidir leat é a úsáid freisin ar na bratacha -s nó -u a shíniú ar do chlib cryptographically.

ansin, san áireamh leis bugfix no fhorbairt chomh maith:

$ Seiceáil git a fhorbairt
# Aistrigh go brainse 'a fhorbairt'
$ git dul --no-hotfix ff-1.2.1
# Cumaisc a rinne Athchúrsach.
# (Achoimre ar na hathruithe)

Is é an t-aon eisceacht don riail seo go, nuair nach bhfuil aon brainse scaoileadh ar siúl, athruithe hotfix Caithfidh siad a chumasc seo brainse scaoileadh, in ionad fhorbairt. chumasadh bugfix no brainse scaoileadh faoi ​​deara an bugfix a chumasc i fhorbairt chomh maith, nuair a bheidh an brainse scaoileadh tá críochnaithe. (Má tá an obair i fhorbairt Éilíonn láithreach seo bugfix agus ní féidir leis fanacht go dtí an brainse scaoileadh críochnaithe, Is féidir leat a chumasadh go sábháilte bugfix do deveolp freisin.)

ar deireadh, bain an géaga sealadach:

$ git brainse -d hotfix-1.2.1
# brainse Scriosta hotfix-1.2.1 (cuireadh abbe5d6).

achoimre

Cé go bhfuil aon rud i ndáiríre neamhghnách sa mhúnla brainse, Is féidir an figiúr ag tús an phoist a bheith an-úsáideach i ár dtionscadail. Taispeánann sé samhail intinne simplí a thuiscint agus is féidir do bhaill foirne chun comhthuiscint ar próisis a fhorbairt d' Branching agus scaoileadh.

Tá leagan PDF den fhigiúr ar ardchaighdeán ar fáil sa bhlag post bunaidh: http://nvie.com/posts/a-successful-git-branching-model/ [nó ar an nasc thíos Íosluchtaigh]. Téigh amach romhainn agus é a chur ar an mballa le haghaidh tagartha tapaidh ag am ar bith.

Líon iomlán na n-amas: 8815

Athbhreithniú ar “Tá múnla rathúil na mbrainsí i Git

  1. Deivson Nascimento dúirt:

    tráthnóna maith, sei que o Git foi desenvolvido inicialmente pelo sistema Linux mas ao se falar em portabilidade, gostaria de saber se o Git roda no windows MSIS e POSIX??

Leave a Reply

Ní thabharfar do sheoladh r-phoist a fhoilsiú. Réimsí riachtanacha atá marcáilte le *