تفاوت git pull و git merge و git fetch

دوستان من دچار یه سردرگمی شدم در گیت اولا دوست داشتم تفاوت این 3 تا کامند رو بدونم
دوم اینکه من وقتی git pull میزنم از یک برنچ ریموت دیگه : مثلا فرض کنید یه master داریم و دوتا ریموت برنچ بنام dev1 و dev2.

dev1 میاد گیت pull میزنه از برنچ من که dev 2 و میدونم که ابتدا گیت fetch اتفاق میفته و بعدش merge میشن اوتومات حالا ما میخوایم کاری کنیم ابتدا fetch اتفاق بیفته و بعد دولپر ارشدdev1 تغییرات جونیور dev2 رو ببینه و سپس merge کنه اینکارو رو چطور میتونیم انجام بدیم؟ راه حلش میتونه cherry pick یا rebase باشه؟
workflow ی ما میخواد اینطری باشه.

برای دیدن تفاوت برنچ ها از
git diff
استفاده میشه و workflow که میخواهیذ با چند مرحله کامند میشه انجام داد
اما به نظر من ایده خوبی نیست بهتره تمام branch ها از مستر ساخته بشوند و زمان تمام شدن کار pull request به مستر بدین همه برنامه نویس ها همین روند دنبال کنند و در صورت تداخل rebase با مستر بشه

2 Likes

به نظرم flow مشکل داره شما برانچ های زیر رو بساز .
Master
Develop
Dev1
Dev2
Dev…

شما میشی یکی از اون برانچهای dev و دیگر برنامه نویس ها و حتی ارشد تیم هم یه برانچ .اگه به اسم افراد باشه که چه بهتر.حالا همه کد هاشونو مرج ریکوئست(gitlab)یا پول ریکوس(github) میزنن تو برانچ develop و فقط ارشد اجازه داره که دستور بده کد طرف مرج بشه تو برانچ دولوپ یا نه. اگه اوکی بود میره تو دولوپ و همه پول میکنن دولوپ رو و در اخر موقع ریلز پروژه برانچ دولوپ یه مرج ریکوست میزنه به برانچ مستر و این برانچ مستر فقط ورژن های ریلز اصلی رو مرج میگیره.

1 Like

به جای دو برنچ Dev و مستر بهتره فقط مستر داشت و موقع release با قابلیت release که یک tag درست میکنه کار کنید
و من پیشنهاد می‌کنم هر برنچ اسم feature برنامه باشه که پس از تمام شدن پاک کنید

1 Like

اونم اوکیه ولی اینو بیشتر برای استیجینگ استفاده میکردیم.

1 Like

ممنونم خیلیم خوب پس rebase کد رو میزاره ادامه مستر منظورتونه؟

این هم فلوی جالبیه اتفاقا یک beta داریم ولی ازش استفاده نکردیم‌. بعد وقتی من مرج ریکوست میدم راهی هست دولپر ارشد صرفا توی اون محیط گیت لب نبینه تغییرات رو بیاره توی ide خودش بیینه؟

مشکل همینجاست که نمیخوایم فیچر برنچ داشته باشیم زیاد میشه برنچ هامون (البته نظر ماست شاید لزوما درست نباشه و بهتره فیچر برنچ داشته باشیم)