
ai ho'ēmi '
Kēia Post He He 'ōlelo kēia Pukiki, o ka palapala, ma English, “Aʻana Git ai manamana ai kükohu“, pono hoomanaia mai au e ka mea kākau, HIHIHI Driessen. Mahalo 'oe ke kanaka!
No ka iiaie oaoieei nīnūnē, kekahi mau hua'ōlelo hou i purposely mālama i loko o English. Aʻu i hoao e hōʻoia i ka originality o ke kikokikona, akā, ke hai pono aku nei au i ai i ka hoʻoponopono 'e, e kōkua ai ka naʻauao i loko o kā mākou' ōlelo (PT-br). Kekahi? Iaea a kamaʻilio no ka hana hou i loko o ka unuhi ka hookipa ana.
Introduction
Kēia mea,ʻaʻole he wahi e ao ana i ka hoʻohana 'Git. Inā keia ka mea nele, I paipai e lawe i ka nana aku i Manual hana Git. ʻAʻole ka mea mākou pahu hopu i hōʻike pehea e e ka lako polokalamu versioning, ma keia hihia, nana Semantic versioning.
Eia ka olelo mea e kahu ai hui laulima ma ka lako polokalamu versioning. ike no oe ia oe i mau programmers “hooeueu ana” i loko o ka hookahi kumu kuhi? He mea nui ke oia i ulu, akā, hiki paha nui headache (poho a me ka rework) ina aole he mana. E pale aku i nā mea haku polokalamu, mai overwriting kekahi i ka hana, a hōʻoia 'e holumua ai ulu a me ka hoʻonohonoho, minimizing pāonioni paʻa a me ka mālama 'ana i lako polokalamu hookuu aku oia i, e mākou hana Git a me kükohu na lala mua.
lala kükohu
Ma keia wahi aʻu e haawi i ka hooulu ana ÷ au ia i loko o kekahi o kaʻu mau papahana (nā ma ka hana a me ka paulele i ka hoʻomana) kokoke 1 makahiki aku nei, a ka mea, ua i loa holomua. Kekahi manawa aku nei au makemake e kākau e pili ana ia, akā,ʻaʻole loa ia i ka loaʻa manawa, no laila, a hiki. Au e e kamailio no ka pāhana lāliʻi, pono e pili ana i ka hoʻoneʻe kaua na lala a me ka hooponopono hookuu aku oia i.

Kēia kumu hoʻohālike ole wale o ka wepa Git i kahi mea paahana no ka versioning o ko nā mea a pau mākou kumu kuhi. (Incidentally, ina e hoihoi oe i loko o Git, mākou hoa a pau GitPrime i nā, maoli-manawa, kekahi mea kupaianaha KālailaiʻIkepili i ka lako polokalamu 'enekinia, kaʻoi loa)
ia git?
No ka hoʻokolokolo pono kūkākūkā o ka pros a me ka hooluolu ana o Git hoʻohālike au i centralized kumu ke kāohi nenoai, nana he pūnaewele puni honua. Aia He He weliweli “kaua” a puni ia. like me ka mea haku polokalamu, I makemake Git i pili i nā mea a pau'ē aʻe nei hana i keia la. Git kanalua hoʻololi i ke ala haku polokalamu manaʻo e pili ana i ka hana ana i kekahi merge ole, e kāinoa i kekahi lala. I hele mai, mai ka panina ao nei CVS / Subversion, kahi merging / ai manamana ai He mea 'oe wale nō, hoʻokahi nō hana i loko o ka manawa a me ia mau mea he uuku scary (“E ao oukou no kāna hana e lawelawe o merge, ka mea, nahu mai oe!”).
Ano, Git i kēia mau hana [merging / ai manamana ai] Ka mea mau loa na mea a ho i kekahi kumu nui loa o ko mākou hana oaeouee?, manaoio. no ka mea, hoohalike, ʻaʻole puke CSV / Subversion, ai manamana ai e ka merging e uhi lakou no ka manawa mua wale nō ma hope Mokuna (no ka holomua mea hoʻohana), ana ma kekahi puke ma luna o Git, keia ua ike ma ka Mokuna 3 (kumu o).
E like me ka hopena o kona naau kupono, a repetitiveʻano, ai manamana ai e ka merging Ka mea, e hou i kekahi mea e e makau. maoli, ka mana e hooponopono i na mea paahana e kōkua emerge a ho okumu i lala oi ma mua o kekahi mea e ae.
lawa o anakuhi, e ka hooulu ana kŘkohu. Ke kükohu mea aʻu e haawi iʻaneʻi meaʻano nui, aole oi ma mua o ka lākou o nā kaʻina hana i kēlā me kēia hui lala pono e hahai i ka mea e kiʻi i kekahi kauoha aku lako polokalamu ulu kaʻina.
decentralized, oi centralized
Ka waihona AUOO ia ke hana, a ua hana nui loa me keia palapala ai manamana ai Ua Ua haku o ke kikowaena waihona. E noke i keia waihona mea pono “noonoo” Central (no ka mea, Git mea he DVCS [Haawi Version Na Makuahine Systems], i na olelo, aohe mea e like me he kikowaena waihona ma luna o ka 'ilikai oaoieei-). Mākou, eʻano a hiki i kēia waihona like me Kinohi, mai keia inoa mea kama'āina i nā mea hoʻohana Git.

Kēlā me nā mea haku polokalamu mea pulls e ka pushes ma me Kinohi. Akā, ma o aku o ka pilina pahu-huki no ka centralized [me Kinohi], kēlā me kēia mea haku polokalamu hiki i hopu [hoohiolo] loli no nā na¯ e lilo Subteams. no ka mea, hoohalike, keia hiki e pono e hana me elua a oi haku polokalamu ma luna o kekahi kumu nui hou functionality, mua o ka hoʻouna ' [e hookuke] i ka hana ma ka holo no me Kinohi. I ka luna, neia manawa, ua iiaciiie-nâ hui o Alice a me Bob, Alice Hawaii David, e ka Clair a me David.
Technically, keia o ia hoʻi, aohe mea oi ma mua o Alice ua ho'ākāka 'ia ke keʻena Git, o Bob, kuhikuhi i Bob ka waihona, a me ka hope-versa.
Ka papa kuhikuhiE lālā
ma ka hope, Ua hooulu kükohu ua hala loa lana e na Ke Ana Hoʻohālike mai laila. Ke kikowaena waihona i kona mau lala elua [na lala] e alakai i ka ola pau ole:
- haku
- hoʻomōhala
ka lala haku iloko o me Kinohi E e kama'āina i nā mea hoʻohana Git. ia laua i lala haku, he mea kekahi lala i kapaia o hoʻomōhala.
ua noonoo me Kinohi / haku like me ka ka papa kuhikuhiE lala ma ke kumu kuhi POʻO mau Hōʻike 'o ka moku'āina ? iecaianoaaiiuo-makaukau [makaukau no ka? iecaianoaaiiuo].
ua noonoo me Kinohi / hoʻomōhala like me ka lala kahi i ka papa kuhikuhiE kumu POʻO mau Hōʻike 'o ka moku'āina a me ka mea hope developmental loli e e haawi i ka mea e hiki mai ana ke kala. e kapa aku i kekahi mea “lala hoʻohui '”. A ma ka loa sinister? Ieoaeunoaa iauaeoia hiki mai ana.
A lohe ke kumu kuhi i loko o ka lala hoʻomōhala he paa wahi kīnā a me ka mea kokoke no ia e kuu [nolaila ia i kuu], a pau hoʻololi pono e merged [merged] i hope i ka lala haku a laila ia me ka mana helu [hookuu]. Pehea keia ua hanaia ma ka au mamuli, ua kūkā mai no hoi ia.
nolaila,, kēlā manawa i nā loli i hoohui [merged] hoʻi i ka haku, Ua Ua ua loaʻa i ka hou mana [nolaila ia i kuu], ma ka wehewehena. E ho'āʻo i ka e loa ikaika e pili ana ia, alaila,, theoretically, Oe ke hiki ke hoʻohana i ka kōmi'ōkuhi makau Git e 'akomi' hana, a hoouna aku mākou noi i ka? Iecaianoaaiiie KikowaenaUa manaʻo mea he hana ʻaʻole haku.
kākoʻo lālā
kaʻaoʻao o ka na lala ka papa kuhikuhiE, haku e ka hoʻomōhala, mākou hooulu kükohu hoʻohana i keʻano o ka na lala kākoʻo, e kokua i ka i ka wā hoʻokahi 'ana ma waena o kēlā me kēia haumāna, mea 1) kōkua ai i nā ka ka hoʻokoloʻana o ka hou hiʻona [hiʻona], 2) prepares no ka haawi ana i ka mana hou [hookuu] e ka 3) Ua kōkua i koke koho flaws i? Iecaianoaaiiuo [hotfix]. Haʻalele na lala ka papa kuhikuhiE, estes na lala Ua he He pōkole ola kīkoʻo kona, no ka mea, e ho'ōla e wehe.
Keʻano o ka na lala [kākoʻo] ua hiki ke hana, ka mea, e:
- Ka makamake nui o na lala
- Release lālā
- Hotfix lālā
Kēlā me kēia no kēia mau na lala Ua loaʻa he mau 'manao, a ua paa ia ma ka ikaika rula, no laila, ua, na lala hiki ke hoolawaia ma lala a me ka na lala Ka mea, e ke merged [merged] ko lakou mau pale. Eʻike mākou i kēlā me kēia [na lala] ma awhile.
Mai ka oaoieei-kuanaʻike, poe na lala Ka mea, i ole manaoia “kūikawā”. Kēlā me kēiaʻano o ka lala Ua Ua CATEGORY_NAME ma ke ala, ua hana. ultimately, Ka mea, e pono na mea na lala no ka Old Git.
Ka makamake nui o na lala
– Oe hiki lala [lala] mai:
hoʻomōhala
– Ua hui pu [merge] hou:
hoʻomōhala
– Hea ka Aha-elele o lala:
i kekahi mea, koe nae haku, hoʻomōhala, release- *, ole hotfix- *
i ka hiʻona lālā (ai kekahi manawa, i kapaia o kumuhana lālā) Ka mea, i hoʻohana 'ia e hoʻoikaika hou hiʻona / functionality no ka wā e hiki mai hookuu paha kekahi. Ka wā e hoʻomaka ana i ka ulu ana o ka hiʻona, i ka pale kaua kala ma a keia hiʻona e e hoohui i pono e ike ole ia ma keia wahi.
Ke ae pā o ka hiʻona lālā mea i koe ana hiʻona e ulu, akā, ka mea, e ho'ōla e hoohui [merged] hoʻi i ka hoʻomōhala (e paʻa hoʻohui i ka hou hiʻona ka mea e hiki mai ana hookuu) ole i kāpaeʻia (ma ka hihia o ka pomaikai ole oe ka hoao ana).
Ka makamake nui o na lala nō kāu nei wale nō i loko o ka waihona hoʻomōhala, ole ma me Kinohi.
E pili ana i ka hiʻona mau lala
$ git a Kūʻai -b. myfeature hoʻomōhala # Switched to a new branch "myfeature" |
Ka hoʻohuiʻana i ka hoʻopauʻana o ke hiʻona ma Kūkulu
hiʻona finalized hiki ke merged[merged] me ka lala hoʻomōhala e hui ia paʻa i ka mea e hiki mai ana hookuu.
$ git a Kūʻai hoʻomōhala # Ua hō'ā i ka lālā 'hoʻomōhala' $ git hele --ʻaʻole-ff myfeature # ke hōʻano hou ea1b82a..05e9557 # (Summary o ka loli) # $ git lala -d myfeature # Holoiʻia lala myfeature (ua 05e9557). $ git pahu aku ai i Kinohi hoʻomōhala |
A ia? aiina –ole-ff Ka mea, ke kumu o ka merge [merge] mau hana i ka hou mea hana, a hiki ina ka merge hiki ke hana me ka hoʻokēʻai-i mua [ff]. Kēia hookaaokoa ae mai o losing ike e pili ana i ka mōʻaukala o ke ola o ka hiʻona lala, Hoʻohui 'ia a pau hana Ka mea, no, hui pu ia hiʻona. Hoʻohālikelike:

No hope hihia [pohihihi luna], he mea hiki ole ke ike mai i ka Git moʻolelo i o hana Ka mea, Ua hoʻokō i loko o ka hiʻona; oe makemake i ka heluhelu hana lima a pau i ke kaola memo. reversing ka hiʻona a pau (i na olelo, ka pūʻulu hana), He He maoli headache i loko o ka hope pilikia, oiai ka mea, ua hikiwawe hana ina ka hae –ole-ff Ua Ua ua hoʻohana.
SIM, keia, e hana ana i kekahi mau mea hou hana (me ka nele), akā, me ka waiwai, ua nui oi aku ma mua o ka waiwai e lilo aku.
Release lālā
– Oe hiki lala [lala] mai:
hoʻomōhala
– Ua hui pu [merge] hou:
hoʻomōhala e ka haku
– Hea ka Aha-elele o lala:
release- *
i ka hookuu aku oia i na lala kōkua ma ka hoomakaukau ana i ka iiauo i? iecaianoaaiiuo mana [? iecaianoaaiiuo hookuu]. Ka mea, ae oe, e kau kiko o ka i, ka hope minuke i. eia hoi, ka mea, ae uuku mākaʻi kiaʻi pilikia a me ka wehewehena o meta-ʻikepili no ka hookuu (mana ka helu, compilation nā lā, a pela aku). Ma ka hana keia hana a pau i loko o ka hookuu lala, ka hoʻomōhala lala ua i hooakea ai i ka loaa hiʻona ka mea e hiki mai ana nui hookuu [mana].
Ke ki manawa e hana i kekahi hou hookuu lala ai manamana ai o hoʻomōhala o ka wā o ka hoʻomōhala ia mea ua (ʻaneʻane) hōʻikeʻana i ka makemake ana o ka hou hookuu [mana]. a pau hiʻona moho no ka hookuu ia e kukulu pono e hoohui [merge] i ka hoʻomōhala kēia manawa. ua hiʻona ke alo hookuu aku oia i wā e hiki mai e manaʻo nei e hiki mai ana hookuu [mana].
Ua pono ia i ka hoʻomaka o ka hookuu lala ka mea e hiki mai ana hookuu hookipa mai i ka mana helu – ole ma mua. a laila,, ka hoʻomōhala lala lewa loli ai i ka “aʻe hookuu” [kekahi mana], akā, ia mea unclear paha keia “kekahi mana” E ho'ōla e 0.3 ai ole ia, 1.0, a hiki i ka hookuu lala Ka hoʻomaka 'ana. Keia olelo hooholo ua ia i ka hoʻomaka o ka hookuu lala a ka mea, ua paa ma na rula o ka papahana ma luna o versioning [I paipai ike e pili ana i “Semantic versioning“].
E pili ana i ka hookuu lala
i ka hookuu aku oia i na lala Ka mea i hanaia, mai ka hoʻomōhala lala. no ka mea, hoohalike, aku nei au i ka mana 1.1.5 He ka he? Iecaianoaaiiuo kēia, a i ka nui hookuu e hele mai ana. Ka moku'āina o hoʻomōhala Ua makaukau no ka “kekahi mana” [aʻe hookuu] a ua hoʻoholo i kēia e lilo i ka mana 1.2 (ma ka lieu o 1.1.6 ai ole ia, 2.0). alaila,, ramificamos iā mākou, a lawe mākou i ka hookuu lala he inoa hōʻikeʻana i ka hou mana helu:
$ git a Kūʻai -b. hookuu-1.2 hoʻomōhala # Switched to a new branch "release-1.2" $ ./kuia ke-mana.sh 1.2 # Waiho ai i ia mau ala ana, mana kuia ke i 1.2. $ git hana -he -ka m "Bumped version number to 1.2" # [hookuu aku oia i-1.2 74d9424] Kuia ke mana helu i 1.2 # 1 AEIU hoʻololi, 1 hookomo(+), 1 holoi '(-) |
Ma hope e pili ana i ka hou lala a me ka nānā 'ana i ia, ua kuia i ka mana helu. ʻaneʻi, bump-version.sh He He iwi kōmi'ōkuhi e hoʻololi kekahi hana kope AEIU, e noonoo i ka hou mana. (keia e hiki, maopopo, e ka manuale loli – ka wahi mea i kekahi AEIU hoʻololi i.) alaila,, Ua ua i hana o ka Hoʻololi 'mana helu.
keia hou lala paha e malaila no kekahi manawa, a hiki i ka hookuu ua hope, kuu. I loko o kēia wā, pilikia fixes Hiki ke noi i loko o keia lala (kahi o hoʻomōhala lala). Ka hou o ka nui hou hiʻona ʻaneʻi ua pololei pāpā. Ka mea, e ke merged [merged] iloko o hoʻomōhala e ka, no laila,, kali no ka mea e hiki mai ana nui hookuu.
Hoʻopau i ka hookuu lala
ka wā o ka hookuu lala He makaukau e lilo i maoli mana, kekahi mau hana pono ia e hana. mua, ka hookuu lala Ua Ua merged i loko o haku (hope o kēlā me kēia hana ʻaʻole haku He He hou mana ma ka ho'ākāka 'ana, hoomanao). laila, i hana ʻaʻole haku It E e kaha maha no ka maʻalahi wā e hiki mai olua i keia mana mōʻaukala. hope, hoʻololi i ka hookuu lala Ka mea, Pono, e ke merged [merged] hou i ka hoʻomōhala, no laila, ua hookuu aku oia i wā e hiki mai i pihaʻi me keia mau pilikia fixes.
Ka mua mau anuu ma Git:
$ git a Kūʻai haku # Ua hō'ā i ka lālā 'haku' $ git hele --ʻaʻole-ff hookuu-1.2 # Merge i ma recursive. # (Summary o ka loli) $ git Tag -he 1.2 |
ka hookuu He manawa loa, a hoʻopaʻa 'no ka wā e hiki mai i maopopo nä haumäna.
i hoʻopuka: oe ke hoi hoʻohana i nā lepa -s a -u
E malama i na mea hou i loko o hookuu lala, mākou pono, e olokaa ae ia hoʻi i ka hoʻomōhala. i Git:
$ git a Kūʻai hoʻomōhala # Ua hō'ā i ka lālā 'hoʻomōhala' $ git hele --ʻaʻole-ff hookuu-1.2 # Merge i ma recursive. # (Summary o ka loli) |
Kēia ka anu u ke alakai i ka merge kue (paha e hele, koke ke hoʻololi i ka mana helu). inā no laila,, hoʻoponopono a me ka hana hana.
Ano, maoli, ua pau, ka hookuu lala Ua hiki ke wehe 'ia, hope mākou hou pono ia:
$ git lala -b hookuu-1.2 # Holoiʻia lala hookuu-1.2 (ua ff452fe). |
Hotfix lālā
– Oe hiki lala [lala] mai:
haku
– Ua hui pu [merge] hou:
hoʻomōhala e ka haku
– Hea ka Aha-elele o lala:
hotfix- *
i ka Hotfix lālā Ka mea, mau mea i like loa me hookuu lālā, ka mea, i kekahi manao e hoomakaukau i kekahi iiauo i? iecaianoaaiiuo mana, eia nae unplanned. Ka mea, e alaʻe mai ka pono e hana koke ma hope o ka hua'ōlelo i makemake moku'āina o ka? Iecaianoaaiiie mana [ma ka hoʻohana]. I ka wā o ka pilikia hewa ia lŘlŘ i loko o ka? Iecaianoaaiiie mana, Ua pono e kakau koke, laila kekahi hotfix lala Ua hiki ke loko mai o ka lepili i ka hoailona o ka na-i? Iecaianoaaiiuo kēia i loko o haku lala.
ʻO Mānoa, he wahi ia o ka hana o ka me kēia haumāna (ʻaʻole hoʻomōhala lala) hiki ke hoʻomau, ana kekahi ua hoʻomākaukau i ka kokololio? iaea o ka ole i? iecaianoaaiiuo.
E pili ana i ka hotfix lala
i ka hotfix lālā Ka mea i hanaia, mai ka haku lala. no ka mea, hoohalike, holoholo i ka mana 1.2 He ka papa hoʻokolohua o ke kala o ka iecaianoaaiiuo e holo mai ana, a i kekahi mau pilikia ma muli o ia i ka nui hewa. hoʻololi i ka hoʻomōhala e waiho ana i ka malie lolelua ka. Mākou hiki laila lala i kekahi hotfix lala a hoʻomaka i ke hoʻoponopono i ka pilikia:
$ git a Kūʻai -b. hotfix-1.2.1 haku # Switched to a new branch "hotfix-1.2.1" $ ./kuia ke-mana.sh 1.2.1 # Waiho ai i ia mau ala ana, mana kuia ke i 1.2.1. $ git hana -he -ka m "Bumped version number to 1.2.1" # [hotfix-1.2.1 41e61bb] Kuia ke mana helu i 1.2.1 # 1 AEIU hoʻololi, 1 hookomo(+), 1 holoi '(-) |
Mai poina i ka hoʻololi 'ana i ka mana ka helu ma hope ai manamana ai!
laila, paʻipaʻi i ka hewa a me ka hana i ka hana ? iaea i loko o hoʻokahi a oi hana hookaawale.
$ git hana -ka m "Fixed severe production problem" # [hotfix-1.2.1 abbe5d6] Paa loa? Iecaianoaaiiuo pilikia # 5 AEIU hoʻololi, 32 hookomo(+), 17 holoi '(-) |
Finalizing i kekahi hotfix lala
ka wā pau, ka bugfix Oe Pono e e merged hoʻi i haku, akā, i pono ia e hoohui hoʻi i loko o hoʻomōhala, e hōʻoia i ka bugfix Ua Ua kekahi hui pū i loko o ka aʻe kalaʻana. He mea nō i 'ano like me ke ala hookuu lālā ka mea, i finalized.
mua, IeAIIeXIAaIEN haku a me ka Tag hookuu [e kaha i ke kauwela]:
$ git a Kūʻai haku # Ua hō'ā i ka lālā 'haku' $ git hele --ʻaʻole-ff hotfix-1.2.1 # Merge i ma recursive. # (Summary o ka loli) $ git Tag -he 1.2.1 |
i hoʻopuka: oe ke hoi hoʻohana i nā lepa -s a -u
laila, nā ka bugfix ʻaʻole hoʻomōhala no hoi:
$ git a Kūʻai hoʻomōhala # Ua hō'ā i ka lālā 'hoʻomōhala' $ git hele --ʻaʻole-ff hotfix-1.2.1 # Merge i ma recursive. # (Summary o ka loli) |
Ka mea wale nō koe nae i ka rulaʻaneʻi ka mea, ia aia no he hookuu lala underway, hoʻololi i ka hotfix Ka mea, Pono, e ke merged no keia hookuu lala, kahi o hoʻomōhala. merge bugfix ʻaʻole hookuu lala e i ka bugfix e merged ma hoʻomōhala no hoi, ka wā o ka hookuu lala ua pau. (Inā i ka hana i loko o hoʻomōhala koke pono keia bugfix a ua hiki ole kali a hiki i ka hookuu lala ua pau, oe ke paa merge bugfix no ka mea, deveolp pū.)
hope, wehe i ka lala ? aiaiiuie:
$ git lala -b hotfix-1.2.1 # Holoiʻia lala hotfix-1.2.1 (ua abbe5d6). |
hōʻuluʻulu manaʻo
'Oiai, aohe mea maoli kekahi i loko o keia lala kŘkohu, ka huahelu ma ka hoʻomaka o ke kia hiki e loa pono keia mau mea i loko o ko kākou mau papahana. Ua hōʻike i ka mea noʻonoʻo kükohu e maopopo a leie aku me kēia haumāna e kūkulu i ka hoʻomaopopo like 'ana o keʻano o ka hanaʻana ai manamana ai e ka ka hoʻokuʻu '.
A PDF mana o kbps huahelu ua hoakaka ia ma ka palapala moʻomanaʻo moʻomanaʻo: http://nvie.com/posts/a-successful-git-branching-model/ ['ole ma o ka Download loulou ma lalo iho nei]. E mamua, a kau aku ia ma luna o ka pā pōhaku no ka poe ola, i maopopo nä haumäna i kekahi manawa.

maikai awakea, Au ike i Git i initially hoʻomohala no Linux akā, i ka wa e kamailio ana portability, I kahaha no ina Git holo ma POSIX MSIS a me ka puka makani??