دستور git cherry-pick: چیست و چطور از آن استفاده کنیم؟

دستور git cherry-pick: چیست و چطور از آن استفاده کنیم؟

این روش را با یکپارچه سازی عادی در گیت مقایسه کنید: زمانی که یک merge یا rebase انجام میدهید، همه کامیت ها از برنچ یکپارچه می شوند.

دستور cherry-pick در طرف مقابل به شما اجازه می دهد تا کامیت های منحصر را برای یکپارچه سازی انتخاب کنید. در این مثال، فقط C2 به برنچ مستر یکپارچه می شود ولی C4 یکپارچه نمیشود.

چه موقع باید از cherry-pick استفاده کنیم؟

پاسخ کوتاه: تا جایی که ممکن است به ندرت. دلیل این که چرا باید به ندرت از cherry-pick استفاده کنیم این است که منجر به ایجاد کامیت های تکراری یا duplicate می شود: زمانی که شما یک کامیت را به برنچ HEAD خود با استفاده از cherry-pick یکپارچه می کنید گیت مجبور است یک کامیت جدید با همان محتوا ایجاد کند. البته این یک شی کامیت کاملا جدید با شناسه SHA جدید خودش است. 

هر زمان که این امکان را دارید که از  Merge یا Rebase  برای یکپارچه سازی استفاده کنید  باید این کار را بکنید. cherry-pick را برای مواردی بگذارید که استفاده از روش های merge و rebase ممکن نیست. مثلا زمانی که یک Hotfix بایستی ایجاد بشه یا زمانی که می خواهید فقط یک یا چند کامیت را از برنچ ذخیره کنید.

چطور باید از دستور cherry-pick استفاده کنم؟

در ساده ترین حالت، شما فقط نیاز دارید تا شناسه SHA کامیت مورد نظر را در برنچ HEAD جاری خود وارد کنید.

git cherry-pick af02e0b

با این روش، نسخه مورد نظر به طور مستقیم به برنچ check out شده شما کامیت می شود. اگر شما مایل باشید تا اصلاحات بیشتری انجام دهید، می توانید به گیت دستور بدهید تا فقط تغییرات کامیت را به کپی کاری شما اضافه کند بدون اینکه به طور مستقیم آنها را کامیت کند:

git cherry-pick af02e0b --no-commit

اگر شما در حال استفاده از Tower Git client هستید شما می توانید یک یا چند کامیت را  cherry-pick به سادگی با درگ دراپ کردن cherry-pick کنید:

 

منبع:‌ https://www.git-tower.com/learn/git/faq/cherry-pick