Git တွင်အောင်မြင်သောအချိုးအစားပုံစံ

Git ကိုဘယ်လိုသုံးရမှန်းသိဖို့အရေးကြီးတယ်, ၎င်းတွင် ပူးပေါင်း၍ စီမံခန့်ခွဲနိုင်သောဆော့ဝဲလ်ဖွံ့ဖြိုးမှုပတ်ဝန်းကျင်ထိန်းသိမ်းခြင်းပါဝင်သည်.

ချေးငွေ

ဒီ post မူရင်း၏ပေါ်တူဂီဗားရှင်းဖြစ်ပါတယ်, အင်္ဂလိပ်ဘာသာဖြင့်, “အောင်မြင်သော Git ဌာနခွဲပုံစံ“, တရားဝင်စာရေးသူကလုပ်ပိုင်ခွင့်, ဗင်းဆင့် Driessen. ကျေးဇူးတင်ပါတယ်လူ!

နည်းပညာပိုင်းဆိုင်ရာအကြောင်းပြချက်များအတွက်, အချို့သော့ချက်စာလုံးများကိုရည်ရွယ်ချက်ရှိရှိဖြင့်အင်္ဂလိပ်ဘာသာဖြင့်ထိန်းသိမ်းထားသည်. ငါစာသား၏မူရင်းအာမခံဖို့ကြိုးစားခဲ့တယ်, ဒါပေမယ့်ငါတို့ဘာသာစကားနဲ့နားလည်မှုကိုလွယ်ကူချောမွေ့စေဖို့ပြုပြင်ပြောင်းလဲမှုတွေလုပ်ရမယ်ဆိုတာဝန်ခံပါတယ် (PT-BR). ဘာသာပြန်အတွက်တိုးတက်မှုအတွက်ပြင်ဆင်ခြင်းသို့မဟုတ်အကြံပေးခြင်းများကိုကြိုဆိုပါသည်.

နိဒါန်း

ဒါက Git ကိုဘယ်လိုသုံးရမလဲဆိုတာသင်ပေးနေတဲ့ Post မဟုတ်ပါဘူး. ဒီဟာကသင်လိုချင်တာပါ, ငါကြည့်ဖို့အကြံပြုအပ်ပါသည် လက်စွဲ Git လုပ်ပါ. ဆော့ဗ်ဝဲဗားရှင်းမည်သို့လုပ်ရမည်ကိုပြရန်ကျွန်ုပ်တို့ရည်မှန်းချက်လည်းမဟုတ်ပါ, ဤကိစ္စတွင်အတွက်, ကြည့် semantic versioning.

ဤနေရာတွင်အဆိုပြုလွှာသည်အသင်းအဖွဲ့ဆော့ဖ်ဝဲလ်ဗားရှင်းတွင်ပူးပေါင်းပါ ၀ င်မှုကိုစီမံခန့်ခွဲရန်ဖြစ်သည်. သင့်မှာပရိုဂရမ်မာတွေအများကြီးရှိတယ်ဆိုတာသိထားပါ “ရွေ့လျား” တူညီတဲ့အရင်းအမြစ်ကုဒ်၌တည်၏? ဤသည်ဖွံ့ဖြိုးတိုးတက်မှုအရှိန်မြှင့်ရန်အရေးကြီးပါသည်, သို့သော်၎င်းသည်ခေါင်းကိုက်ခြင်းများကိုဖြစ်စေနိုင်သည် (ဆုံးရှုံးမှုနှင့် rework) ထိန်းချုပ်မှုမရှိလျှင်. developer တစ်ယောက်အားအခြားသူ၏အလုပ်များကို overwrite လုပ်ခြင်းမှကာကွယ်ရန်နှင့်တိုးတက်သောနှင့်စနစ်တကျရှိသောဖွံ့ဖြိုးမှုကိုသေချာစေရန်, ပconflictsိပက္ခများလျော့နည်းစေခြင်းနှင့် software ဗားရှင်းများကိုစီမံခြင်း, ကျွန်တော် Git နဲ့သုံးတာပါပဲ အခက်များ နောက်ကိုလိုက်ရန်.

ဌာနခွဲပုံစံ

ဤစာမူ၌ကျွန်ုပ်၏အချို့သောစီမံကိန်းများတွင်အသုံးပြုခဲ့သောဖွံ့ဖြိုးတိုးတက်မှုပုံစံကိုတင်ပြသည် (အလုပ်နှင့်ပုဂ္ဂလိကနှစ် ဦး စလုံး) အနား 1 လွန်ခဲ့သောနှစ်ပေါင်းများစွာ, နှင့်အလွန်အောင်မြင်သောဖြစ်ခဲ့သည်. ငါကအကြောင်းကြာမြင့်စွာရေးသားချင်တယ်, ဒါပေမယ့်ငါမရရှိနိုင်အချိန်တွေ့ရှိခဲ့ဘူး, သေး. ငါစီမံကိန်းအသေးစိတ်ကိုအကြောင်းပြောဆိုလိမ့်မည်မဟုတ်ပါ, အဘို့အရုံမဟာဗျူဟာများ အခက်များ နှင့်စီမံခန့်ခွဲမှု ထုတ်ပြန်ခဲ့သည်.

ဒီတံဆိပ်ခတ်မော်ဒယ်သီးသန့်မထားဘူး Git ကျွန်တော်တို့ရဲ့အရင်းအမြစ်ကုဒ်အားလုံး versioning များအတွက် tool အဖြစ်. (ရည်ရွယ်ချက်မှာ, သငျသညျ Git စိတ်ဝင်စားလျှင်, ကျွန်တော်တို့ရဲ့ကုမ္ပဏီ GoPrime ထောက်ပံ့, Real-time, ဆော့ဖ်ဝဲအင်ဂျင်နီယာ optimization အချို့မယုံကြည်နိုင်လောက်အောင်ဒေတာခွဲခြမ်းစိတ်ဖြာ)

ဘာကြောင့် git??

ဗဟိုအရင်းအမြစ်ထိန်းချုပ်စနစ်များနှင့်နှိုင်းယှဉ်လျှင် Git ၏ကောင်းကျိုးနှင့်ဆိုးကျိုးများကိုစေ့စေ့စပ်စပ်ဆွေးနွေးရန်, ကြည့် တစ်ဦး ဝဘ်. အဲဒီမှာကြီးမားတဲ့ရှိပါတယ် “စစ်” ပတ်ပတ်လည်. တစ် ဦး developer အဖြစ်, ငါ Git ကိုယနေ့တည်ရှိနေသောအခြားကိရိယာများအားလုံးထက်ပိုနှစ်သက်သည်. Git သည် developer များစဉ်းစားပုံကိုပြောင်းလဲခဲ့သည်မှာသေချာသည် ပေါင်းစည်းသည် သို့မဟုတ်တစ်ခုဖန်တီးပါ ဌာနခွဲ. ငါ၏ဂန္ကမ္ဘာမှလာသည် CVS / အဖျက်သမား, ဘယ်မှာ ပေါင်းစည်း / အကိုင်းအခက် ၎င်းသည်သင်ခဏတစ်ကြိမ်သာလုပ်သောအရာဖြစ်ပြီးအမြဲတမ်းအနည်းငယ်တော့ကြောက်စရာကောင်းသည် (“အကျိုးစီးပွားပconflictsိပက္ခများကိုသတိပြုပါ ပေါင်းစည်းသည်, သင့်ကိုကိုက်တယ်!”).

Git နှင့်အတူဤလုပ်ရပ်များ [ပေါင်းစည်း / အကိုင်းအခက်] အလွန်ရိုးရှင်းပြီးကျွန်ုပ်တို့၏လုပ်ငန်းခွင်လုပ်ရိုးလုပ်စဉ်၏အဓိကအစိတ်အပိုင်းတစ်ခုဖြစ်သည်ကိုကိုယ်စားပြုသည်, ယုံတယ်. ဥပမာအား, အဘယ်သူမျှမ စာအုပ် CSV / အဖျက်သမား, အကို အီး ပေါင်းစည်း ပထမ ဦး ဆုံးအကြိမ်နောက်ပိုင်းအခန်းများတွင်သာဖော်ပြထားသည် (အဆင့်မြင့်အသုံးပြုသူများသည်), မည်သည့်နေချိန်မှာ Git အပေါ်စာအုပ်, ဒီအခနျးတှငျတှေ့မွငျရသညျ 3 (အခြေခံ).

၎င်း၏ရိုးရှင်းခြင်းနှင့်ထပ်တလဲလဲသဘောသဘာဝ၏အကျိုးဆက်အဖြစ်, အကို အီး ပေါင်းစည်း ကြောက်စရာအကြောင်းမရှိတော့. အမှန်, ဗားရှင်းထိန်းချုပ်ကိရိယာများကကူညီသင့်ပါတယ်ပေါင်းစည်းသည် ဖန်တီးပါ ဌာနခွဲ အခြားအရာအားလုံးထက်ပိုပါတယ်.

ဟောပြောရန်လုံလောက်, ဖွံ့ဖြိုးတိုးတက်မှုပုံစံကိုသွားကြစို့. ဤနေရာတွင်ကျွန်ုပ်တင်ပြမည့်ပုံစံသည်အခြေခံအားဖြင့်စီမံခန့်ခွဲထားသောဆော့ဝဲလ်ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်ကိုရောက်ရှိရန်အဖွဲ့ ၀ င်တစ် ဦး စီလိုက်နာရမည့်လုပ်ထုံးလုပ်နည်းများသာဖြစ်သည်။.

ဗဟိုချုပ်ကိုင်မှုလျှော့ချ, ဒါပေမယ့်ဗဟို

ကျွန်ုပ်တို့အသုံးပြုသော repository ၏ဖွဲ့စည်းပုံနှင့်၎င်းသည်ဤမော်ဒယ်နှင့်အလွန်ကောင်းစွာအလုပ်လုပ်သည် အကို ဗဟို repository ကိုပါဝင်သည်. ဒီ repository ကသာကြောင်းသတိပြုပါ “အဖြစ်ယူခဲ့ပါတယ်” ဗဟို (ဘာလို့လဲဆိုတော့ Git ဟာ DVCS ပါ [ဖြန့်ဝေဗားရှင်းထိန်းချုပ်ရေးစနစ်များ], အခြားစကား, နည်းပညာဆိုင်ရာအဆင့်မှာဗဟို repository ကဲ့သို့ဘာမှမရှိဘူး). ကျနော်တို့အဖြစ်ဒီ repository ကိုရည်ညွှန်းပါလိမ့်မယ် မူလ, ဒီနာမကိုအမှီအားလုံး Git အသုံးပြုသူများအကျွမ်းတဝင်ဖြစ်ပါတယ်ကတည်းက.

တစ်ခုချင်းစီကို developer ပါဘူး ဆွဲငင် အီး တွန်း ရန် မူလ. ဒါပေမယ့်ဆက်ဆံရေးကိုကျော်လွန်ပြီး push-pull ဗဟိုအဘို့ [မူလ], developer တစ်ယောက်ချင်းစီလည်းကောက်ယူနိုင်သည် [ဆွဲပါ] အခြားစွမ်းကနေအပြောင်းအလဲ subteams ဖွဲ့စည်းရန်. ဥပမာအား, ၎င်းသည် developer နှစ် ဦး သို့မဟုတ်ထိုထက်ပိုသောကြီးမားသောအင်္ဂါရပ်တစ်ခုကိုအတူတကွလုပ်ဆောင်ခြင်းအတွက်အသုံးဝင်သည်, ယခင်ပေးပို့ခြင်း [တွန်း] အဘို့အတိုးတက်မှုအတွက်အလုပ်လုပ်ကြသည် မူလ. အပေါ်ကပုံမှာ, Alice နဲ့ Bob ရဲ့ subteams တွေရှိတယ်, အဲလစ်အီးဒေးဗစ်, Clair နှင့် David တို့.

နည်းပညာပိုင်း, ဆိုလိုသည်မှာ Alice သည် Bob ဟုခေါ်သောဝေးလံသော Git ဟုသတ်မှတ်ခြင်းထက် ပို၍ အဓိပ္ပာယ်မရှိပါ, Bob ၏ repository ကိုညွှန်ပြ, နှင့်အပြန်အလှန်.

အဓိကအကိုင်းအခက်

နောက်ကွယ်မှာ, ဒီဖွံ့ဖြိုးမှုမော်ဒယ်အတော်လေးထွက်ရှိတည်ဆဲမော်ဒယ်များအားဖြင့်မှုတ်သွင်းသည်. ဗဟို repository ကိုနှစ်ခုအကိုင်းအခက်ရှိပါတယ် [အခက်များ] အဆုံးမဲ့ဘဝနှင့်အတူကျောင်းအုပ်ကြီး:

  • ဆရာ
  • ဖွံ့ဖြိုးတိုးတက်

အဆိုပါ ဌာနခွဲဆရာ တွင် မူလ Git အသုံးပြုသူတိုင်းနှင့်ရင်းနှီးသင့်သည်. စင်ပြိုင် ဌာနခွဲဆရာ, နောက်တစ်ခုရှိသေးတယ် ဌာနခွဲ ခေါ်ခဲ့သည် ဖွံ့ဖြိုးတိုးတက်.

ကျနော်တို့စဉ်းစားပါ မူရင်း / မာစတာ source code ၏အဓိကအကိုင်းအခက်အဖြစ် ဦးခေါင်း အခြေအနေတစ်ခုကို အမြဲထင်ဟပ်စေသည်။ ထုတ်လုပ်မှုအဆင်သင့် [ထုတ်လုပ်မှုအတွက်အဆင်သင့်].

ကျနော်တို့စဉ်းစားပါ မူလ / ဖွံ့ဖြိုးတိုးတက်မှု ဖြစ်သကဲ့သို့ ဌာနခွဲ source code ၏အဓိကနေရာတွင် ဦးခေါင်း လာမည့်ထုတ်ဝေမှုတွင် ပေးပို့ရမည့် နောက်ဆုံးထွက်ရှိထားသော ဖွံ့ဖြိုးတိုးတက်မှုပြောင်းလဲမှုများနှင့် အခြေအနေတစ်ခုကို အမြဲထင်ဟပ်စေသည်။. တချို့က ခေါ်ကြမယ်။ “ဌာနခွဲ ပေါင်းစပ်မှု”. ဤနေရာတွင် အဆိုးဆုံးသော အဆောက်အအုံများ ဖြစ်ပေါ်လာသည်။.

source code ထဲမှာ ပါသွားတဲ့အခါ အကိုင်းအခက် ဖွံ့ဖြိုးတိုးတက်စေခြင်း။ တည်ငြိမ်သောအမှတ်သို့ရောက်ရှိပြီး လွတ်မြောက်ရန် အသင့်ဖြစ်နေပါပြီ။ [ထုတ်ပြန်ခဲ့သည်။], ပြောင်းလဲမှုအားလုံးကို ပေါင်းစည်းရပါမည်။ [ပေါင်းစည်းခဲ့သည်။] သို့ ပြန်သွားရန် ဌာနခွဲဆရာ ထို့နောက် ဗားရှင်းနံပါတ်ဖြင့် အမှတ်အသားပြုပါ။ [လွှတ်ပေးရန်]. ဒီဟာကို ဘယ်လိုလုပ်ဆောင်ရမယ်ဆိုတာ အသေးစိတ်ပြောပါ။, နောက်မှ ဆွေးနွေးပါမည်။.

ထိုကွောငျ့, အကြိမ်တိုင်းတွင် အပြောင်းအလဲများကို ထည့်သွင်းထားသည်။ [ပေါင်းစည်းခဲ့သည်။] နောက်သို့ ဆရာ, ဗားရှင်းအသစ်ကို ထုတ်ပေးသည်။ [ထုတ်ပြန်ခဲ့သည်။], အဓိပ္ပါယ်. အဲဒါကို အရမ်းတင်းကြပ်ဖို့ ကြိုးစားတယ်။, ထိုအခါ, သီအိုရီအရ, ဇာတ်ညွှန်းကိုတောင် သုံးလို့ရတယ်။ ချိတ် Git မှ ကျွန်ုပ်တို့၏ အပလီကေးရှင်းကို ထုတ်လုပ်သည့် ဆာဗာများဆီသို့ အလိုအလျောက် တည်ဆောက်ပြီး တွန်းပို့ပေးပါသည်။ ကျူးလွန် အဘယ်သူမျှမ ဆရာ.

အရန်ကိုင်း၊

အနားမှာ အခက်များ အဓိက, ဆရာ အီး ဖွံ့ဖြိုးတိုးတက်, ကျွန်ုပ်တို့၏ ဖွံ့ဖြိုးတိုးတက်မှုပုံစံသည် အမျိုးမျိုးကို အသုံးပြုသည်။ အခက်များ အဖွဲ့၀င်များကြား တပြိုင်နက် ဖွံ့ဖြိုးတိုးတက်မှုကို အထောက်အကူပြုရန်, အဘယ်အရာကို 1) အင်္ဂါရပ်အသစ်များကို ခြေရာခံရန် လွယ်ကူစေသည်။ [အင်္ဂါရပ်များ], 2) ဗားရှင်းအသစ်ပေးပို့ရန် ပြင်ဆင်နေပါသည်။ [လွှတ်ပေးရန်] အီး 3) ထုတ်လုပ်မှု ချို့ယွင်းချက်များကို လျင်မြန်စွာ ဖြေရှင်းရန် ကူညီပေးသည်။ [hotfix]. မတူပါ။ အခက်များ အဓိက, estes အခက်များ သက်တမ်းတိုပါသည်။, နောက်ဆုံးတွင် ဖယ်ရှားခံရမည်ဖြစ်သောကြောင့်၊.

အမျိုးမျိုးသောအမျိုးအစားများ အခက်များ [အရန်များ] ငါတို့ဘာသုံးနိုင်မလဲ။, သူတို့ဖြစ်ကြသည်:

  • ကိုင်း
  • အကိုင်းအခက်တွေ လွှတ်တယ်။
  • Hotfix အကိုင်းအခက်

ဤအရာတစ်ခုစီ အခက်များ တိကျသောရည်ရွယ်ချက်ရှိပြီး တင်းကျပ်သောစည်းမျဉ်းများဖြင့် ချုပ်နှောင်ထားသည်။, သောကြောင့်, အခက်များ မြင့်တက်စေနိုင်သည်။ ဌာနခွဲ ဒါလား။ အခက်များ ပေါင်းစည်းရမည်။ [ပေါင်းစည်းခဲ့သည်။] သင်၏ပစ်မှတ်များသို့. သူတို့ အသီးသီးကို တွေ့ကြမယ်။ [အခက်များ] တခဏအတွင်း.

နည်းပညာရှုထောင့်ကနေ, အဲဒါတွေ အခက်များ ထည့်သွင်းစဉ်းစားကြသည်မဟုတ်။ “အထူး”. တစ်မျိုးစီ ဌာနခွဲ ၎င်းတို့ကို ကျွန်ုပ်တို့အသုံးပြုပုံဖြင့် အမျိုးအစားခွဲထားသည်။. နောက်ဆုံးမှာ, ရိုးရှင်းပါသည်။ အခက်များ ကောင်းသော Git အဟောင်း.

ကိုင်း

[အင်္ဂါရပ်များ = အင်္ဂါရပ်များ / လုပ်ဆောင်ချက်များ]

– အကိုင်းအခက် [ဌာနခွဲ] ထံမှ:
ဖွံ့ဖြိုးတိုးတက်
– ပေါင်းစည်းရမည်။ [ပေါင်းစည်းသည်] နောက်တဖန်:
ဖွံ့ဖြိုးတိုးတက်
– အမည်ပေးခြင်းသဘောတူစာချုပ် ဌာနခွဲ:
အဲ့မှာ, မှလွဲ ဆရာ, ဖွံ့ဖြိုးတိုးတက်, လွှတ်-*, ဒါမှမဟုတ် ပြင်ဆင်ချက်-*

မင်း အကိုင်းအခက် (သို့မဟုတ် တစ်ခါတစ်ရံ ခေါ်သည်။ ခေါင်းစဉ်ကိုင်း) လာမည့် သို့မဟုတ် အနာဂတ်ထွက်ရှိမှုအတွက် အင်္ဂါရပ်များ/လုပ်ဆောင်နိုင်စွမ်းအသစ်များကို ဖွံ့ဖြိုးတိုးတက်စေရန်အတွက် အသုံးပြုပါသည်။. ဖွံ့ဖြိုးတိုးတက်မှုစတင်သောအခါ ထူးခြားချက်, ဤအင်္ဂါရပ်တွင် ထည့်သွင်းမည့် ပစ်မှတ်ဗားရှင်းကို ဤအချိန်တွင် ကောင်းစွာ မသိနိုင်ပါ။.

တစ်ဦး၏အနှစ်သာရ အကိုင်းအခက် တည်ရှိနေချိန်ဖြစ်သည်။ ထူးခြားချက် ဖွံ့ဖြိုးတိုးတက်မှုတွင်ရှိသည်။, ဒါပေမယ့် နောက်ဆုံးမှာ ပေါင်းထည့်သွားလိမ့်မယ်။ [ပေါင်းစည်းခဲ့သည်။] နောက်သို့ ဖွံ့ဖြိုးတိုးတက် (အသစ်ကိုသေချာထည့်ပါ။ ထူးခြားချက် နောက်တစ်ခု လွှတ်ပေးရန်) သို့မဟုတ် လွှင့်ပစ်ပါ။ (စမ်းသပ်မှု မအောင်မြင်ပါက၊).

ကိုင်း ပုံမှန်အားဖြင့် repository တွင်သာရှိသည်။ ဖွံ့ဖြိုးတိုးတက်, မဝင်ပါ။ မူလ.

အကိုင်းအခက်များကို ဖန်တီးခြင်း။

$ git ငွေရှင်းပါ။ -b myfeature ဖွံ့ဖြိုးသည်။
# Switched to a new branch "myfeature"

ပြီးမြောက်သောအင်္ဂါရပ်ကို ဖွံ့ဖြိုးတိုးတက်စေရန် ထည့်သွင်းခြင်း။

အင်္ဂါရပ်များ ပြီးမြောက်အောင် ပေါင်းစပ်နိုင်သည်။[ပေါင်းစည်းခဲ့သည်။] အဖြစ် အကိုင်းအခက် ဖွံ့ဖြိုးတိုးတက်စေခြင်း။ သူတို့ကို နောက်တစ်ခု ထပ်ထည့်ဖို့ သေချာတယ်။ လွှတ်ပေးရန်.

$ git checkout ကို develop လုပ်ပါ။
# ဌာနခွဲ 'ဖွံ့ဖြိုးတိုးတက်' သို့ ပြောင်းခဲ့သည်
$ git ပေါင်းစည်းပါ။ --အဘယ်သူမျှမ-ff myfeature
# ea1b82a..05e9557 ကို အပ်ဒိတ်လုပ်နေသည်။
# (အပြောင်းအလဲများ၏အကျဉ်းချုပ်)
# $ git အကိုင်းအခက် -d myfeature
# ဌာနခွဲ myfeature ကို ဖျက်လိုက်ပါပြီ။ (05e9557 ဖြစ်ခဲ့သည်။).
$ git push သည် မူရင်းအတိုင်း develop လုပ်သည်။

အလံတစ်ခု –no-ff ပေါင်းစည်းခြင်းကို ဖြစ်စေသည်။ [ပေါင်းစည်းသည်] အရာဝတ္ထုအသစ်တစ်ခုကို အမြဲဖန်တီးပါ။ ကျူးလွန်, ပေါင်းစပ်မှုကို a ဖြင့်လုပ်ဆောင်နိုင်သော်လည်း၊ ရှေ့သို့အမြန် [ff]. ၎င်းသည် သင့်အား တည်ရှိမှု၏သမိုင်းကြောင်းအချက်အလက်များ ဆုံးရှုံးခြင်းမှ ကာကွယ်ပေးသည်။ အင်္ဂါရပ်ဌာနခွဲ, အားလုံးကို အုပ်စုဖွဲ့ခြင်း။ ကျူးလွန်သည်။ တွင်ထည့်သွင်းခဲ့သည်။ ထူးခြားချက်. နှိုင်းယှဥ်ပါ။:

နောက်ဆုံးကိစ္စမဟုတ်ဘူး။ [အပေါ်ကပုံထဲက], Git ရဲ့သမိုင်းကနေ ဘယ်ဟာကိုမှ ကြည့်လို့မရပါဘူး။ ကျူးလွန်သည်။ တစ်ဖွဲ့အတွင်း အကောင်အထည်ဖော်ခဲ့ကြသည်။ ထူးခြားချက်; မှတ်တမ်းစာတိုအားလုံးကို သင်ကိုယ်တိုင်ဖတ်ရမည်ဖြစ်ပါသည်။. တစ်ခုပြောင်းပြန် ထူးခြားချက် တစ်ခုလုံး (အခြားစကား, အုပ်စုတစ်စု ကျူးလွန်သည်။), နောက်ဆုံးအခြေအနေမှာ တကယ့်ကို ခေါင်းကိုက်စရာပါပဲ။, အလံကို လွယ်လွယ်ကူကူ လုပ်လို့ ရနေချိန် –no-ff အသုံးပြုခဲ့သည်။.

sim, ၎င်းသည် နောက်ထပ် အရာဝတ္ထုအချို့ကို ဖန်တီးပေးလိမ့်မည်။ ကျူးလွန်သည်။ (ဗလာ), ဒါပေမယ့် အမြတ်က ကုန်ကျစရိတ်ထက် အများကြီး ပိုပါတယ်။.

အကိုင်းအခက်တွေ လွှတ်တယ်။

[ထုတ်ဝေမှု = ထုတ်ဝေခြင်း/ပေးပို့ခြင်း/ဗားရှင်း]

– အကိုင်းအခက် [ဌာနခွဲ] ထံမှ:
ဖွံ့ဖြိုးတိုးတက်
– ပေါင်းစည်းရမည်။ [ပေါင်းစည်းသည်] နောက်တဖန်:
ဖွံ့ဖြိုးတိုးတက် အီး ဆရာ
– အမည်ပေးခြင်းသဘောတူစာချုပ် ဌာနခွဲ:
လွှတ်-*

မင်း အကိုင်းအခက်များကို ထုတ်ပေးသည်။ ထုတ်လုပ်မှုဗားရှင်းအသစ်ကို ပြင်ဆင်ရာတွင် ကူညီပေးသည်။ [ထုတ်လုပ်ရေး]. သူတို့သည် ငါ၏နောက်ဆုံးမိနစ်တွင် မင်းကို အစက်ချခွင့်ပြုသည်။. ထိုမှတပါး, သေးငယ်သော ပြင်ဆင်မှုများကို ခွင့်ပြုပေးသည်။ ပိုးကောင်များ နှင့်အဓိပ္ပါယ် မက်တာဒေတာ အဘို့ လွှတ်ပေးရန် (ဗားရှင်းနံပါတ်, တည်ဆောက်မည့်ရက်စွဲများ, စသည်တို့ကို). ဒီအလုပ်တွေအားလုံးကို တစ်ခုတည်းလုပ်ပါ။ ကိုင်းလွှတ်, အ အကိုင်းအခက်ကို ဖွံ့ဖြိုးတိုးတက်စေပါသည်။ ခံယူရန် သန့်ရှင်းနေပါ။ အင်္ဂါရပ်များ နောက်အကြီးကြီး လွှတ်ပေးရန် [ဗားရှင်း].

အသစ်ဖန်တီးရန် အဓိကအခိုက်အတန့်ဖြစ်သည်။ ကိုင်းလွှတ် မှကိုင်း ဖွံ့ဖြိုးတိုးတက် ဘယ်အချိန်မှာလဲ။ ဖွံ့ဖြိုးတိုးတက် ရှိပြီးသား (နီးပါး) အသစ်၏အလိုရှိသောအခြေအနေကိုထင်ဟပ် လွှတ်ပေးရန် [ဗားရှင်း]. တိုင်း အင်္ဂါရပ်များ ကိုယ်စားလှယ်လောင်းများ လွှတ်ပေးရန် တည်ဆောက်ရန် ပေါင်းစပ်ပါဝင်ရမည်။ [ပေါင်းစည်းသည်] သို့ ဖွံ့ဖြိုးတိုးတက် အခုပဲ. ပြီးပြီ။ အင်္ဂါရပ်များ ရင်ဆိုင်နေရသည်။ ထုတ်ပြန်ခဲ့သည် အနာဂတ်သည် နောက်ကို စောင့်ရမည်။ လွှတ်ပေးရန် [ဗားရှင်း].

အဲဒါတစ်ခုရဲ့အစမှာ အတိအကျပါပဲ။ ကိုင်းလွှတ် နောက်တစ်ခု လွှတ်ပေးရန် ဗားရှင်းနံပါတ်ကို လက်ခံပါ။ – အရင်က မဟုတ်ဘူး။. ဒီအချိန်အထိ, အ အကိုင်းအခက်ကို ဖွံ့ဖြိုးတိုးတက်စေပါသည်။ အပြောင်းအလဲများကို ထင်ဟပ်စေပါသည်။ “နောက်ထွက်” [နောက်ဗားရှင်း], ဒါပေမယ့် ဒါက ရှင်းမပြနိုင်သေးဘူး။ “နောက်ဗားရှင်း” ဖြစ်ခြင်းအဆုံးသတ်လိမ့်မည်။ 0.3 သို့မဟုတ် 1.0, သည်အထိ ကိုင်းလွှတ် စတင်ပါ။. ဤဆုံးဖြတ်ချက်သည် နိဂုံး၏အစတွင် ပြုလုပ်ခဲ့သည်။ ကိုင်းလွှတ် ဗားရှင်းပြောင်းလဲခြင်းနှင့်ပတ်သက်သည့် ပရောဂျက်စည်းမျဉ်းများဖြင့် လုပ်ဆောင်သည်။ [ကြည့်ဖို့ အကြံပြုချင်ပါတယ်။ “semantic versioning“].

ဖြန့်ချိရေးဌာနခွဲတစ်ခုဖန်တီးခြင်း။

မင်း အကိုင်းအခက်များကို ထုတ်ပေးသည်။ တို့မှ ဖန်တီးထားသည်။ အကိုင်းအခက်ကို ဖွံ့ဖြိုးတိုးတက်စေပါသည်။. ဥပမာအား, ဗားရှင်းဆိုကြပါစို့ 1.1.5 လက်ရှိထုတ်လုပ်မှုဗားရှင်းဖြစ်ပြီး ကျွန်ုပ်တို့တွင် အကြီးကြီးတစ်ခုရှိသည်။ လွှတ်ပေးရန် ရောက်ရှိလာသည်။. သို့မဟုတ် ပြည်နယ် ဖွံ့ဖြိုးတိုးတက် အဆင်သင့်ဖြစ်နေပါပြီ။ “နောက်ဗားရှင်း” [နောက်ထွက်] ပြီးတော့ ဒါက ဗားရှင်းဖြစ်လာဖို့ ဆုံးဖြတ်ခဲ့တယ်။ 1.2 (အစား 1.1.6 သို့မဟုတ် 2.0). ထိုအခါ, ကိုင်း၊ ကိုင်းလွှတ် ဗားရှင်းအသစ်နံပါတ်ကို ရောင်ပြန်ဟပ်သော အမည်:

$ git ငွေရှင်းပါ။ -b လွှတ်-1.2 ဖွံ့ဖြိုးတိုးတက်
# Switched to a new branch "release-1.2"
$ ./ဆောင့်-ဗားရှင်း.sh 1.2
# ဖိုင်များကို အောင်မြင်စွာ ပြင်ဆင်ပြီးပါပြီ။, ဗားရှင်းထိသွားတယ်။ 1.2.
$ git commit -တစ်ဦး -မီတာ "Bumped version number to 1.2"
# [release-1.2 74d9424] ဗားရှင်းနံပါတ်ကို ထိသွားတယ်။ 1.2
# 1 ဖိုင်တွေ ပြောင်းသွားတယ်။, 1 ထည့်သွင်းမှုများ(+), 1 ဖျက်ခြင်း(-)

အသစ်ဖန်တီးပြီးနောက် ဌာနခွဲ ၎င်းကိုဝင်ရောက်ပါ။, ကျွန်ုပ်တို့သည် ဗားရှင်းနံပါတ်ကို နှိပ်သည်။. ဒီမှာ, bump-version.sh ဗားရှင်းအသစ်ကို ထင်ဟပ်စေရန် လုပ်ဆောင်နေသော ကော်ပီရှိ ဖိုင်အချို့ကို shell script တစ်ခုအဖြစ် ပြောင်းလဲပေးပါသည်။. (ဒီလိုလုပ်လို့ရတယ်။, ရှင်းလင်းသော, manual change ဖြစ်ပါစေ။ – အဓိကအချက်မှာ အချို့သောဖိုင်များသည် ပြောင်းလဲခြင်းပင်ဖြစ်သည်။) ထိုအခါ, ပြီးပါပြီ။ ကျူးလွန် ပြုပြင်ထားသော ဗားရှင်းနံပါတ်၏.

ဤအသစ် ဌာနခွဲ အဲဒီမှာ ခဏလောက် ရှိနေနိုင်တယ်။, သည်အထိ လွှတ်ပေးရန် ကျိန်းသေလွှတ်ပေးပါ။. ဤကာလအတွင်း, bug fixes များကို ဤနေရာတွင် အသုံးချနိုင်သည်။ ဌာနခွဲ (အစား အကိုင်းအခက်ကို ဖွံ့ဖြိုးတိုးတက်စေပါသည်။). အသစ်အဆန်းတွေ ထပ်ထည့်လိုက်တာ အရမ်းကောင်းပါတယ်။ အင်္ဂါရပ်များ ဤနေရာတွင် တင်းကြပ်စွာ တားမြစ်ထားသည်။. ပေါင်းစည်းရမည်။ [ပေါင်းစည်းခဲ့သည်။] တွင် ဖွံ့ဖြိုးတိုးတက် အီး, ဒါကြောင့်, နောက်အကြီးကြီးကိုစောင့်ပါ။ လွှတ်ပေးရန်.

ထုတ်ဝေရေးဌာနခွဲကို အပြီးသတ်ခြင်း။

ဟို ကိုင်းလွှတ် တကယ့်ဗားရှင်းဖြစ်လာဖို့ အဆင်သင့်ဖြစ်နေပါပြီ။, လုပ်ဆောင်ချက်အချို့ကို လုပ်ဆောင်ရန် လိုအပ်သည်။. ပထမ, အ ကိုင်းလွှတ် ပေါင်းစပ်ထားသည်။ ဆရာ (တစ်ကြိမ်စီ ကျူးလွန် အဘယ်သူမျှမ ဆရာ ဗားရှင်းအသစ်ဟု အဓိပ္ပါယ်ရသည်။, သတိရရင်). ပြီးတော့, ဒီ ကျူးလွန် အဘယ်သူမျှမ ဆရာ ဤဗားရှင်းမှတ်တမ်းကို အနာဂတ်ရည်ညွှန်းရာတွင် အဆင်ပြေချောမွေ့စေရန် အမှတ်အသားပြုသင့်သည်။. နောက်ဆုံး, အပြောင်းအလဲများ ပြုလုပ်ခဲ့သည်။ ကိုင်းလွှတ် ပေါင်းစပ်ရန်လိုအပ်သည်။ [ပေါင်းစည်းခဲ့သည်။] တဖန် ဖွံ့ဖြိုးတိုးတက်, ဒါကြောင့် ထုတ်ပြန်ခဲ့သည် အနာဂတ်တွင် ဤချွတ်ယွင်းချက်ပြင်ဆင်မှုများလည်း ပါဝင်ပါသည်။.

Git တွင်ပထမအဆင့်နှစ်ဆင့်:

$ git checkout မာစတာ
# ဌာနခွဲ 'မာစတာ' သို့ ပြောင်းခဲ့သည်
$ git ပေါင်းစည်းပါ။ --အဘယ်သူမျှမ-ff လွှတ်-1.2
# recursive ဖြင့် ပြုလုပ်သော ပေါင်းစည်းခြင်း။.
# (အပြောင်းအလဲများ၏အကျဉ်းချုပ်)
$ git tag -တစ်ဦး 1.2

အဆိုပါ လွှတ်ပေးရန် ယခုအခါ ပြီးပြည့်စုံပြီး နောင်အကိုးအကားအတွက် အမှတ်အသားပြုထားသည်။.

ပွောဆို: -s သို့မဟုတ် -u အလံများကိုလည်း အသုံးပြုနိုင်သည်။ သင်၏ tag ကို လျှို့ဝှက်ရေးသွင်းရန်.

အပြောင်းအလဲများကို ထိန်းထားရန် ကိုင်းလွှတ်, အဲဒါတွေကို ပြန်ပေါင်းစည်းဖို့ လိုတယ်။ ဖွံ့ဖြိုးတိုးတက်. Git မရှိပါ။:

$ git checkout ကို develop လုပ်ပါ။
# ဌာနခွဲ 'ဖွံ့ဖြိုးတိုးတက်' သို့ ပြောင်းခဲ့သည်
$ git ပေါင်းစည်းပါ။ --အဘယ်သူမျှမ-ff လွှတ်-1.2
# recursive ဖြင့် ပြုလုပ်သော ပေါင်းစည်းခြင်း။.
# (အပြောင်းအလဲများ၏အကျဉ်းချုပ်)

ဤအဆင့်သည် ပေါင်းစည်းရန် ပဋိပက္ခဆီသို့ ဦးတည်သွားနိုင်သည်။ (သွားဖြစ်နိုင်ပါတယ်။, ဗားရှင်းနံပါတ်ကို ပြောင်းလိုက်တဲ့အတွက်). ခိုင်လုံသောကိစ္စ, ပြင်ပြီးလုပ်ပါ။ ကျူးလွန်.

ယခု, ငါတို့တကယ်ပြီးသွားပြီ, အ ကိုင်းလွှတ် ဖယ်ရှားနိုင်သည်။, ဘာလို့လဲဆိုတော့ ငါတို့က မလိုအပ်တော့ဘူး။:

$ git အကိုင်းအခက် -ဃ လွှတ်-1.2
# ဖျက်လိုက်သော ဌာနခွဲထုတ်လွှတ်မှု-1.2 (ff452fe ဖြစ်ခဲ့သည်။).

Hotfix အကိုင်းအခက်

– အကိုင်းအခက် [ဌာနခွဲ] ထံမှ:
ဆရာ
– ပေါင်းစည်းရမည်။ [ပေါင်းစည်းသည်] နောက်တဖန်:
ဖွံ့ဖြိုးတိုးတက် အီး ဆရာ
– အမည်ပေးခြင်းသဘောတူစာချုပ် ဌာနခွဲ:
ပြင်ဆင်ချက်-*

မင်း Hotfix အကိုင်းအခက် နှင့် အလွန်တူပါသည်။ အကိုင်းအခက်တွေ လွှတ်တယ်။, ထုတ်လုပ်မှုဗားရှင်းအသစ်ကိုလည်း ပြင်ဆင်ရန် ရည်ရွယ်ထားသောကြောင့် ဖြစ်သည်။, မစီစဉ်ထားသော်လည်း၊. မလိုလားအပ်သော ထုတ်လုပ်မှုအခြေအနေတစ်ခု ထွက်ပေါ်လာပြီးနောက် ချက်ချင်းလုပ်ဆောင်ရန် လိုအပ်ခြင်းမှ ဖြစ်ပေါ်လာခြင်းဖြစ်သည်။ [အသုံးပြုနေပါသည်။]. ထုတ်လုပ်ရေးတွင် အရေးကြီးသော အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်သောအခါ, ချက်ချင်းဖြေရှင်းရမယ်။, ထို့နောက် a hotfix ဌာနခွဲ ရှိပြီးသားထုတ်လုပ်မှုဗားရှင်းကို အမှတ်အသားပြုသည့် tag မှ ဆင်းသက်လာနိုင်သည်။ မာစတာကိုင်း.

အနှစ်သာရကတော့ အသင်းသားတွေရဲ့ အလုပ်ပါ။ (အဘယ်သူမျှမ အကိုင်းအခက်ကို ဖွံ့ဖြိုးတိုးတက်စေပါသည်။) ဆက်လုပ်ပါ, အခြားတစ်ယောက်ယောက်က ထုတ်လုပ်မှုပျက်ကွက်မှုအတွက် အမြန်ပြင်ဆင်နေချိန်တွင်.

hotfix ဌာနခွဲကို ဖန်တီးခြင်း။

မင်း hotfix အကိုင်းအခက် တို့မှ ဖန်တီးထားသည်။ မာစတာကိုင်း. ဥပမာအား, ဗားရှင်းလို့ ယူဆတယ်။ 1.2 ထုတ်လုပ်မှု ဖြန့်ချိမှု၏ လက်ရှိဗားရှင်းသည် လည်ပတ်နေပြီး ဆိုးရွားသော အမှားတစ်ခုကြောင့် ပြဿနာများ ရှိနေသည်။. အပြောင်းအလဲများ ဖွံ့ဖြိုးတိုးတက် မတည်မငြိမ်ဖြစ်ပါစေ။. ပြီးရင် အကိုင်းအခက်တစ်ခု လုပ်လို့ရတယ်။ hotfix ဌာနခွဲ ပြဿနာကို စတင်ဖြေရှင်းပါ။:

$ git ငွေရှင်းပါ။ -b hotfix-1.2.1 ဆရာ
# Switched to a new branch "hotfix-1.2.1"
$ ./ဆောင့်-ဗားရှင်း.sh 1.2.1
# ဖိုင်များကို အောင်မြင်စွာ ပြင်ဆင်ပြီးပါပြီ။, ဗားရှင်းထိသွားတယ်။ 1.2.1.
$ git commit -တစ်ဦး -မီတာ "Bumped version number to 1.2.1"
# [hotfix-1.2.1 41e61bb] ဗားရှင်းနံပါတ်ကို ထိသွားတယ်။ 1.2.1
# 1 ဖိုင်တွေ ပြောင်းသွားတယ်။, 1 ထည့်သွင်းမှုများ(+), 1 ဖျက်ခြင်း(-)

ဌာနခွဲပြီးနောက် ဗားရှင်းနံပါတ်ကို ပြောင်းရန် မမေ့ပါနှင့်!

ပြီးတော့, အမှားကိုပြင်ပြီးလုပ်ပါ။ ကျူးလွန် တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော ပြုပြင်မှု ကျူးလွန် ကွဲကွာ.

$ git commit -မီတာ "Fixed severe production problem"
# [hotfix-1.2.1 abbe5d6] ပြင်းထန်သော ထုတ်လုပ်မှုပြဿနာကို ဖြေရှင်းခဲ့သည်။
# 5 ဖိုင်တွေ ပြောင်းသွားတယ်။, 32 ထည့်သွင်းမှုများ(+), 17 ဖျက်ခြင်း(-)

hotfix ဌာနခွဲတစ်ခုကို အပြီးသတ်ခြင်း။

ပြီးသောအခါ, အ အမှားပြင်ဆင်ခြင်း ပြန်လည်ပေါင်းစည်းရန် လိုအပ်ပါသည်။ ဆရာ, ဒါပေမယ့်လည်း ပြန်ထည့်ထားဖို့ လိုပါတယ်။ ဖွံ့ဖြိုးတိုးတက်, ကြောင်းသေချာစေရန်အလို့ငှာ အမှားပြင်ဆင်ခြင်း နောက်ဗားရှင်းမှာလည်း ထည့်သွင်းထားပါတယ်။. ဒါက လုပ်ပုံလုပ်နည်းနဲ့ တော်တော်လေး ဆင်တူပါတယ်။ အကိုင်းအခက်တွေ လွှတ်တယ်။ မသေချာသေးပါ။.

ပထမ, update ကို ဆရာ e day a လွှတ်ပေးရန် [နွေရာသီအမှတ်အသား]:

$ git checkout မာစတာ
# ဌာနခွဲ 'မာစတာ' သို့ ပြောင်းခဲ့သည်
$ git ပေါင်းစည်းပါ။ --အဘယ်သူမျှမ-ff hotfix-1.2.1
# recursive ဖြင့် ပြုလုပ်သော ပေါင်းစည်းခြင်း။.
# (အပြောင်းအလဲများ၏အကျဉ်းချုပ်)
$ git tag -တစ်ဦး 1.2.1

ပွောဆို: -s သို့မဟုတ် -u အလံများကိုလည်း အသုံးပြုနိုင်သည်။ သင်၏ tag ကို လျှို့ဝှက်ရေးသွင်းရန်.

ပြီးတော့, ပါဝင်ပါတယ်။ အမှားပြင်ဆင်ခြင်း အဘယ်သူမျှမ ဖွံ့ဖြိုးတိုးတက် လည်း:

$ git checkout ကို develop လုပ်ပါ။
# ဌာနခွဲ 'ဖွံ့ဖြိုးတိုးတက်' သို့ ပြောင်းခဲ့သည်
$ git ပေါင်းစည်းပါ။ --အဘယ်သူမျှမ-ff hotfix-1.2.1
# recursive ဖြင့် ပြုလုပ်သော ပေါင်းစည်းခြင်း။.
# (အပြောင်းအလဲများ၏အကျဉ်းချုပ်)

ဤနေရာတွင် စည်းကမ်းချက်၏ တစ်ခုတည်းသော ခြွင်းချက်မှာ ထိုအချက်ပင်ဖြစ်သည်။, တစ်ခုရှိသောအခါ ကိုင်းလွှတ် ဆောင်ရွက်ဆဲဖြစ်သည်, ၏ပြောင်းလဲမှုများ hotfix ဒါကို ပေါင်းစပ်ဖို့ လိုတယ်။ ကိုင်းလွှတ်, မည့်အစား ဖွံ့ဖြိုးတိုးတက်. ပေါင်းစည်းပါ။ အမှားပြင်ဆင်ခြင်း အဘယ်သူမျှမ ကိုင်းလွှတ် ဖြစ်စေသည်။ အမှားပြင်ဆင်ခြင်း ထဲသို့ ပေါင်းထည့်ပါ။ ဖွံ့ဖြိုးတိုးတက် လည်း, ဘယ်အချိန်မှာ ကိုင်းလွှတ် ပြီးပါပြီ။. (အလုပ်ဝင်ရင် ဖွံ့ဖြိုးတိုးတက် ဒါကိုချက်ချင်းတောင်းတယ်။ အမှားပြင်ဆင်ခြင်း ပြီးတဲ့အထိ မစောင့်နိုင်တော့ဘူး။ ကိုင်းလွှတ် ပြီးမြောက်ပါစေ။, သင်လုံခြုံစွာပေါင်းစပ်နိုင်သည်။ အမှားပြင်ဆင်ခြင်း အတွက် ဖွံ့ဖြိုးတိုးတက်မှု ကိုလည်း။)

နောက်ဆုံး, ဖယ်ရှားလိုက်ပါ။ ဌာနခွဲ ယာယီ:

$ git အကိုင်းအခက် -d hotfix-1.2.1
# ဖျက်လိုက်သောဌာနခွဲ hotfix-1.2.1 (abbe5d6 ဖြစ်ခဲ့သည်။).

စိတ္တဇ

ဤဌာနခွဲပုံစံနှင့် ပတ်သက်၍ ထူးထူးခြားခြား တစ်စုံတစ်ရာ မရှိသော်လည်း၊, Post ၏ အစတွင် ပုံသည် ကျွန်ုပ်တို့၏ ပရောဂျက်များတွင် အလွန်အသုံးဝင်ပါသည်။. ၎င်းသည် နားလည်ရလွယ်ကူသော စိတ်ပိုင်းဆိုင်ရာပုံစံကိုပြသပြီး အဖွဲ့၀င်များအား လုပ်ငန်းလုပ်ငန်းစဉ်များကို ဘုံနားလည်မှုတိုးပွားစေပါသည်။ အကို အီး ထုတ်လွှတ်ခြင်း။.

ပုံ၏ အရည်အသွေးမြင့် PDF ဗားရှင်းကို မူရင်းဘလော့ဂ်ပို့စ်တွင် ပေးထားသည်။: http://nvie.com/posts/a-successful-git-branching-model/ [သို့မဟုတ် အောက်ဖော်ပြပါ လင့်ခ်တွင် ဒေါင်းလုဒ်လုပ်ပါ။]. အချိန်မရွေး အမြန်ကိုးကားနိုင်စေရန် ရှေ့သို့သွား၍ နံရံပေါ်တွင် တင်ပါ။.

စုစုပေါင်း access: 12326

တစ်ဦးကသုံးသပ်မှုအပေါ် “Git တွင်အောင်မြင်သောအချိုးအစားပုံစံ

  1. Deivson မွေးဖွားခြင်း ကပြောပါတယ်:

    ကောင်းသောနေ့လည်ခင်း, သယ်ဆောင်ရလွယ်ကူအကြောင်းပြောနေတာသောအခါငါ Git ပိုင်းတွင် Linux တို့အတွက်တီထွင်ခဲ့ကွောငျးကိုသိပေမယ့်, Git POSIX MSIS နှင့်ပြတင်းပေါက်များပေါ်တွင်အလုပ်လုပ်မယ်ဆိုရင်ငါတွေးမိ??

တစ်ဦးစာပြန်ရန် Leave

သင့်အီးမေးလ်လိပ်စာပုံနှိပ်ထုတ်ဝေမည်မဟုတ်ပါ. တောင်းဆိုနေတဲ့လယ်ယာနှင့်အတူမှတ်သားထားတဲ့ *