Дар саросари ҷаҳон, Git системаи идоракунии версияи (VCS) бештар истифодашаванда барои мониторинг ва назорати лоиҳа мебошад. Он инчунин муҳити кории пароканда ва муштаракро пешниҳод мекунад ва ҳамкориро ҳавасманд мекунад.
Шохабандӣ яке аз хусусиятҳои муҳимтарини Git аст, зеро он ба шумо имкон медиҳад, ки бе таъсир ба шохаи асосӣ канали алоҳидаеро барои маҷмӯи мушаххаси тағирот, аз қабили ямоқи хатогӣ, таҳияи хусусияти нав ё озмоиш эҷод кунед.
Дар муқоиса бо дигар амалиётҳои Git, шохасозӣ як усули хеле содда аст. Он ба шумо имкон медиҳад, ки аз пойгоҳи коди аслӣ дур шавед.
Шохабандӣ ба шумо имкон медиҳад, ки бо дигар таҳиягарон зудтар ҳамкорӣ кунед ва ба шумо дар ҷараёни кори худ озодии зиёд фароҳам меорад. Он инчунин ба шумо имкон медиҳад, ки дар як хусусияти нав бидуни таъсир ба боқимондаи пойгоҳи код кор кунед.
Механизми шохабандии Git имкон медиҳад, ки дар дохили лоиҳа филиалҳои нав таъсис дода шаванд.
Пас аз ин шохаҳои иловагӣ метавонанд барои санҷиши тағироти код бидуни дахолат ба рамзи асосии лоиҳа истифода шаванд. Агар ислоҳот бомуваффақият анҷом дода шавад, филиалро метавон дубора ба шохаи асосӣ муттаҳид кард.
Аммо, вақтҳое ҳастанд, ки шумо бояд филиали Git-ро ба таври маҳаллӣ нест кунед, аммо на дур. Барои фаҳмидани он, ки чӣ тавр ин корро кардан лозим аст, хонед.
Git Branch чист?
Git метавонад ба шарофати шохасозӣ якчанд хатҳои корро пайгирӣ кунад. Ин ба шумо имкон медиҳад, ки дар як версияи сершумори лоиҳаи худ кор кунед.
Бисёре аз лоиҳаҳо филиали устувори усторо ҳангоми илова кардани хусусиятҳои нав ё ислоҳи хатогиҳо дар филиали таҳия ё санҷишӣ нигоҳ медоранд.
Вақте ки менеҷерони лоиҳа комилан мутмаинанд, ки тағиротҳои дар филиали Dev воридшуда ба меъёрҳо мувофиқат мекунанд, онҳо метавонанд ин тағиротҳоро ба шохаи асосӣ муттаҳид кунанд. Барои баъзе лоиҳаҳои калонтар, ин давра аксар вақт ба таври номуайян такрор карда мешавад.
Кор бо шохаҳои рушди Git як равиши олиҷаноб барои кор бо барномаи мо ҳангоми пайгирии версияҳои он мебошад. Шохаи рушд, дар маҷмӯъ, тақсимот дар ҳолати кодест, ки роҳи нави пешрафти онро муқаррар мекунад.
Он метавонад дар баробари дигар шохаҳои Git кор кунад, шумо метавонед эҷод кунед. Ба коди мо ба таври муташаккилона ва дақиқ хусусиятҳои нав илова кардан мумкин аст.
Чаро ва кай онро нест кардан лозим аст?
Ин як таҷрибаи маъмулии нигоҳдорӣ нест кардани шохаҳои Git аст, вақте ки онҳо дигар истифода намешаванд, гарчанде ки ин на ҳама вақт универсалӣ ё фаҳмо аст.
Чаро шумо бояд шохаҳои кӯҳнашудаи Git-ро аз анбори худ хориҷ кунед? Ду сабаби асосии ин вуҷуд дорад:
- Онҳо нолозиманд. Аксари филиалҳо, бахусус онҳое, ки ба дархости ҷалб, ки ниҳоят тасдиқ шудаанд, ягон вазифа надоранд.
- Онҳо манбаи нофаҳмиҳо мебошанд. Онҳо хароҷоти назарраси технологӣ илова намекунанд, аммо онҳо кор бо рӯйхати филиалҳо дар анборро барои одамон душвортар мегардонанд.
Филиалҳоро бе тарси гум кардани тағирот бехатар нест кардан мумкин аст.
Сенарияи зеринро баррасӣ кунед: ямоқи филиал-1 тавассути дархости кашидан бо шохаи асосӣ якҷоя карда мешавад. Пеш аз муттаҳидшавӣ, усто ва патч-1, ҳар як ба ислоҳоти гуногун дар таърихи git commit ишора мекунад.
Пас аз муттаҳидшавӣ (агар ӯҳдадории нави якҷоякунӣ илова карда шавад), усто ва патч-1 ҳарду ба ӯҳдадории нави якҷояшавӣ пайваст мешаванд. Дар ин лаҳза, дархости кашидан ба анҷом мерасад ва ҳама телаҳои оянда бояд ба устод пешниҳод карда шаванд, на пач-1.
Маҳалли против филиали дурдаст дар Git
Филиали дурдаст - Он дар системаи алоҳида ҷойгир аст, одатан сервере, ки таҳиягарон метавонанд дастрас бошанд. Вақте ки филиали дурдаст нест карда мешавад, он барои ҳамаи корбарон нест карда мешавад.
Филиали маҳаллӣ - Дар системаи маҳаллӣ, филиали маҳаллӣ захира карда мешавад. Ҳазфи филиали маҳаллӣ ба филиали дур таъсире надорад.
Чӣ тавр филиалҳоро дар маҳал нест кардан мумкин аст?
Он ба шумо имкон намедиҳад, ки филиалеро, ки ҳоло дар он кор карда истодаед, хориҷ кунед, аз ин рӯ боварӣ ҳосил кунед, ки филиалеро, ки шумо нест намекунед, тафтиш кунед. Биёед аз фаҳмидани он, ки чӣ гуна филиали маҳаллиро нест кардан лозим аст, оғоз кунем.
- Барои оғоз кардан, фармони (git branch -a) -ро иҷро кунед, то ҳамаи шохаҳоро бинед (ҳам маҳаллӣ ва ҳам дурдаст).
- Сипас, бо истифода аз фармони (git branch -d) ва пас аз номи филиале, ки шумо мехоҳед хориҷ кунед, шумо метавонед онро нест кунед.
Агар шумо кӯшиш кунед, ки филиалро бо тағиротҳои ҷудонашуда хориҷ кунед, паёми хатогии зерин пайдо мешавад:
Тавре ки дар паёми боло нишон дода шудааст, барои маҷбуран нест кардани шоха, опсияи -D-ро истифода баред, ки миёнабур барои —delete —force мебошад.
Лутфан дар хотир доред, ки нест кардани шохаи муттаҳидшуда боиси аз даст додани ҳама тағирот дар он филиал мегардад.
Агар шумо кӯшиш кунед, ки филиали ҷорӣро нест кунед, шумо паёми зеринро хоҳед дид:
Шумо наметавонед филиалеро, ки дар он ҳастед, хориҷ кунед. Аввал ба филиали дигар гузаред, баъд номи филиалро хориҷ кунед:
Камбудии нест кардани филиал
Камбудии эҳтимолии нест кардани филиалҳо он аст, ки ҳама гуна иртибот бо макони филиал канда мешавад (дар GitHub ва ғайра).
Ман ҳеҷ гоҳ ба шохаҳои ғайриасосӣ пайванди доимӣ надорам ва агар ман мехостам ба ягон кор дар як шохаи мушаххас пайваст шавам, ман эҳтимол онро пас аз он ки он ба дархости кашидан табдил дода шуд, иҷро мекунам (дар ин ҳолат ман ба кашидан-дархост).
Таҳқиқ ниҳоӣ
Донистани чӣ гуна истифода бурдани шохаҳои рушд барои эҷоди замимаи шумо ба таври муназзам муҳим аст. Эҳтиёт бошед, ки рамзи худро дар шохаҳои гуногун сохтор кунед.
Агар, дар ҳар лаҳза, шумо ба як амалиёти мураккаб боварӣ надошта бошед, хондан ҳамеша фикри хуб аст Ҳуҷҷатҳои расмии Git дар шохаҳо.
Дин ва мазҳаб