cherry-pick در git

توی این پس با دستور محبوب cherry-pick در ابزار کنترل نسخه git آشنا میشیم. این دستور یه دستور سادس که خیلی از مواقع به کارمون میاد.

سلام

امروز می خوام نحوه چیدن گیلاس تو git رو بگم. راستش cherry-pick کردن بیشتر معنی گلچین کردن در فارسی رو میده.

بعضی مواقع پیش میاد مثلا داریم روی یه branch کار میکنیم و این وسطا یه سری commit هست (یه فیچر جدا یا یه bug fix مثلا) که می خواهیم سریعتر merge بشه با branch دیگه.

البته کار خوب این بود که از branch مقصد یه branch جدید میساختیم و کد رو تغییر میدادیم و بعدش با branch اصلی merge میکردیم و بعدش حالا branch در حال توسعه رو اپدیت میکردیم. ولی خب حالا کاریه که شده.

بیایید اسم ها رو اینطوری بذاریم:

branch که داریم روش توسعه میدیم و یه سری commit میاد روش = dev

branch که نسخه پایدار کد روش هست و تا چیزی تکمیل نشه با این merge نمیشه = master

حالا فرض کنید یه سری commit روی dev داریم که خودشون یه چیز کامل هستن مثلا یه باگی فیکس شده. شما نمی‌تونید همه dev رو با master مرج کنید، چون یه سری commit دیگه توی dev هست که مربوط به این باگ فیکس نیست و قرار نیست به این زودیا با master مرج بشن. پس میایی گلچین میکنی و یه سری کامیت مورد نظر رو برمیداری merge میکنی.

برای این کار به صورت زیر عمل میکنیم.

اول میریم توی dev:

git checkout dev

بعدش به صورت زیر commit ها رو لیست میکنیم و شناسه اون commit هایی که میخواهیم رو بر میداریم. (همون کد طولانی – hashش دیگه)

git log

حالا میریم به branch که میخواهیم با اون merge کنیم که اینجا همون master هست.

git checkout master

حالا با دستور زیر اون commit که میخواهیم رو از قبلی میاریم توی master:

git cherry-pick [commit hash]

که بجای [commit hash] همون شناسه commit رو بذارید.

با این کار اون commit های مورد نظر میان روی برنچ master و میتونید push کنید بره توی remote 🙂

در حین cherry pick کردن ممکنه مشکلاتی به وجود بیاد مثل conflict یا مثلا یه کامیت رو دو بار cherry pick کنید که اینها و باید مثل حالت merge مشکل رو حل کنید و یا مثلا این cherry pick دومیه رو skip کنید.

حالا برای دیدن اطلاعات بیشتر به صفحه مستندات cherry pick یه نیگاه بندازید.

راستی داشتم دنبال صفحه مستنداتش میگشتم این صفحه هم اومد بالا دیدم عه همینیه که من نوشتم ولی آپشناشم یکم توضیح داده.. حالا مهم نیست، اگه بلد نیستید یا به کارتون نمیاد نیازی نیست یاد بگیرید، صرفا بخونید بعدا به موقعش یاد میگیرد. :))

من یادمه زمانی که با svn کار میکردیم این چیزا رو نداشتیم چون موقع مرج svn دقیقا باید بهش revision میدادیم و میگفتیم اینها رو مرج کن و تا جایی که میدونم ابزار جدا برای گیلاس نداشت 😜 – svn بنظرم خیلی ساده و بامزه بود!

تمام

دیدگاه ها

دیدگاهی نوشته نشده است.

به عنوان اولین نفر دیدگاه خودتان را در مورد این پست بنویسید.