ادغام روش گیت برای قرار دادن یک تاریخچه چنگال دوباره در کنار هم است. دستور Git Merge به شما امکان می دهد خطوط مستقل توسعه ایجاد شده توسط GIT Branch را بگیرید و آنها را در یک شاخه واحد ادغام کنید.
توجه داشته باشید که تمام دستورات ارائه شده در زیر در شاخه فعلی ادغام می شوند. شاخه فعلی برای بازتاب ادغام به روز خواهد شد ، اما شاخه هدف کاملاً بی تأثیر خواهد بود. باز هم ، این بدان معنی است که ادغام GIT اغلب در رابطه با پرداخت GIT برای انتخاب شاخه فعلی و شاخه GI T-D برای حذف شاخه هدف منسوخ استفاده می شود.
چگونه کار می کند
GIT ادغام چندین توالی از تعهدات را در یک تاریخ یکپارچه ترکیب می کند. در شایع ترین موارد استفاده ، از ادغام GIT برای ترکیب دو شاخه استفاده می شود. مثالهای زیر در این سند بر این الگوی ادغام شاخه متمرکز خواهد بود. در این سناریوها ، Git Merge دو نشانگر متعهد ، معمولاً نکات شعبه را می گیرد و یک تعهد پایگاه مشترک بین آنها پیدا می کند. هنگامی که GIT یک تعهد پایگاه مشترک پیدا کرد ، "تعهد ادغام" جدید ایجاد می کند که تغییرات هر دنباله تعهد ادغام صف را ترکیب می کند.
بگویید ما یک ویژگی شاخه جدید داریم که از شاخه اصلی مستقر است. اکنون می خواهیم این شاخه ویژگی را در Main ادغام کنیم.

با استفاده از این دستور ، ویژگی شاخه مشخص شده را در شاخه فعلی ادغام می کند ، ما فرض خواهیم کرد. GIT الگوریتم ادغام را به طور خودکار تعیین می کند (در زیر مورد بحث قرار می گیرد).

تعهدات ادغام در برابر سایر تعهدات بی نظیر است در این واقعیت که آنها دو تعهد والدین دارند. هنگام ایجاد یک ادغام ، Git سعی در ادغام جادویی تاریخ های جداگانه برای شما خواهد داشت. اگر GIT با قطعه ای از داده ها که در هر دو تاریخ تغییر می کند برخورد کند ، قادر به ترکیب خودکار آنها نیست. این سناریو یک تضاد کنترل نسخه است و GIT برای ادامه به مداخله کاربر نیاز دارد.
آماده سازی برای ادغام
قبل از انجام ادغام ، چند مرحله آماده سازی برای اطمینان از هموار بودن ادغام وجود دارد.
شعبه دریافت را تأیید کنید
برای اطمینان از اینکه سر به شاخه صحیح دریافت ادغام اشاره دارد ، وضعیت GIT را اجرا کنید. در صورت لزوم ، GIT Checkout را برای تغییر به شعبه دریافت کننده اجرا کنید. در مورد ما ما Main Checkout Git را اجرا خواهیم کرد.
آخرین تعهدات از راه دور را واکشی کنید
اطمینان حاصل کنید که شاخه دریافت کننده و شاخه ادغام با آخرین تغییرات از راه دور به روز هستند. GIT Fetch را اجرا کنید تا آخرین تعهدات از راه دور را بکشید. پس از اتمام واکشی ، اطمینان حاصل کنید که شعبه اصلی با اجرای GIT کشش آخرین به روزرسانی ها را دارد.
ادغام
هنگامی که قبلاً مورد بحث "آماده سازی برای ادغام" قرار گرفته است ، می توان با اجرای ادغام git شروع کرد که نام شعبه ای که در شعبه دریافتی ادغام می شود ، می توان شروع کرد.
ادغام سریع به جلو
یک ادغام سریع به جلو می تواند هنگامی رخ دهد که یک مسیر خطی از نوک شاخه فعلی به شاخه هدف وجود داشته باشد. به جای ادغام "در واقع" شاخه ها ، تمام GIT برای ادغام تاریخ ها باید انجام شود (یعنی "سریع به جلو") شاخه فعلی تا نوک شاخه هدف را نوک می کند. این به طور موثری تاریخ را ترکیب می کند ، زیرا تمام تعهدات قابل دسترسی از شاخه هدف اکنون از طریق فعلی موجود است. به عنوان مثال ، ادغام سریع جلو از ویژگی های اصلی چیزی شبیه به موارد زیر است:
با این حال ، اگر شاخه ها از هم جدا شوند ، ادغام سریع به جلو امکان پذیر نیست. هنگامی که یک مسیر خطی به شاخه هدف وجود ندارد ، Git چاره ای جز ترکیب آنها از طریق ادغام 3 طرفه ندارد. ادغام های 3 طرفه از یک تعهد اختصاصی برای پیوند دادن دو تاریخ استفاده می کنند. این نامگذاری از این واقعیت ناشی می شود که GIT از سه متعهد برای تولید تعهد ادغام استفاده می کند: دو نکته شاخه و اجداد مشترک آنها.
در حالی که می توانید از هر یک از این استراتژی های ادغام استفاده کنید ، بسیاری از توسعه دهندگان دوست دارند از ادغام های سریع پیش رو (تسهیل شده از طریق rebasing) برای ویژگی های کوچک یا رفع اشکال استفاده کنند ، در حالی که برای ادغام ویژگی های طولانی تر ، ادغام های 3 طرفه را رزرو می کنند. در مورد دوم ، تعهد ادغام حاصل به عنوان یک نمادین پیوستن به دو شاخه عمل می کند.
مثال اول ما نشان دهنده ادغام سریع به جلو است. کد زیر یک شاخه جدید ایجاد می کند ، دو تعهد را به آن اضافه می کند ، سپس آن را با ادغام سریع به جلو در خط اصلی ادغام می کند.
# یک ویژگی جدید را شروع کنیدGIT Checkou t-B Main با ویژگی جدید# برخی از پرونده ها را ویرایش کنیدgit اضافه کردنGit Commi t-m "یک ویژگی را شروع کنید"# برخی از پرونده ها را ویرایش کنیدgit اضافه کردنGit Commi t-m "یک ویژگی را تمام کنید"# ادغام در شاخه جدیداصلی پرداخت gitGit با ویژگی جدید ادغام کنیدGit Branc h-d جدید
این یک گردش کار متداول برای شاخه های موضوعی کوتاه مدت است که بیشتر به عنوان یک توسعه منزوی از یک ابزار سازمانی برای ویژگی های طولانی تر استفاده می شود.
همچنین توجه داشته باشید که GIT نباید از شعبه Gi t-d شکایت کند ، زیرا اکنون با ویژگی جدید از شاخه اصلی قابل دسترسی است.
در صورتی که شما نیاز به تعهد ادغام در طی یک ادغام سریع به جلو برای اهداف نگه داشتن ضبط دارید ، می توانید Git Merge را با گزینه-no-ff. انجام دهید.
ادغام git-no-f
این دستور شاخه مشخص شده را به شاخه فعلی ادغام می کند ، اما همیشه یک تعهد ادغام ایجاد می کند (حتی اگر این یک ادغام سریع به جلو باشد). این برای مستند سازی تمام ادغام هایی که در مخزن شما رخ می دهد مفید است.
ادغام 3 طرفه
مثال بعدی بسیار مشابه است ، اما نیاز به ادغام 3 طرفه دارد زیرا پیشرفت اصلی در حالی که این ویژگی در حال پیشرفت است. این یک سناریوی رایج برای ویژگی های بزرگ یا هنگامی که چندین توسعه دهنده به طور همزمان روی یک پروژه کار می کنند.
یک ویژگی جدید را شروع کنیدGIT Checkou t-B Main با ویژگی جدید# برخی از پرونده ها را ویرایش کنیدgit اضافه کردنGit Commi t-m "یک ویژگی را شروع کنید"# برخی از پرونده ها را ویرایش کنیدgit اضافه کردنGit Commi t-m "یک ویژگی را تمام کنید"# شاخه اصلی را توسعه دهیداصلی پرداخت git# برخی از پرونده ها را ویرایش کنیدgit اضافه کردنGit Commi t-m "برخی از تغییرات فوق العاده پایدار را در Main ایجاد کنید"# ادغام در شاخه جدیدGit با ویژگی جدید ادغام کنیدGit Branc h-d جدید
توجه داشته باشید که انجام یک ادغام سریع به جلو غیرممکن است ، زیرا هیچ راهی برای انتقال اصلی به سمت جدید و بدون بازگشت به حالت جدید وجود ندارد.
برای اکثر گردش کار ، ویژگی های جدید یک ویژگی بسیار بزرگتر است که مدت زمان طولانی برای توسعه طول می کشد ، به همین دلیل است که در این میان تعهدات جدید به طور اصلی ظاهر می شود. اگر شاخه ویژگی شما در واقع به اندازه مثال فوق کوچک بود ، احتمالاً بهتر است که آن را بر روی اصلی دوباره انجام دهید و یک ادغام سریع را انجام دهید. این امر مانع از تعهدات ادغام اضافی در جمع شدن تاریخ پروژه می شود.
حل و فصل درگیری
اگر دو شاخه ای که می خواهید ادغام کنید هر دو قسمت مشابه یک پرونده را تغییر داده اند ، Git نمی تواند بفهمد از کدام نسخه استفاده می شود. هنگامی که چنین شرایطی رخ می دهد ، درست قبل از تعهد ادغام متوقف می شود تا بتوانید درگیری ها را به صورت دستی حل کنید.
بخش عمده ای از فرآیند ادغام GIT این است که از گردش کار ویرایش/مرحله/تعهد آشنا برای حل و فصل اختلافات ادغام استفاده می کند. هنگامی که با یک درگیری ادغام روبرو می شوید ، اجرای دستور وضعیت GIT به شما نشان می دهد که کدام پرونده ها باید حل شوند. به عنوان مثال ، اگر هر دو شاخه همان بخش Hello. py را اصلاح کردند ، چیزی مانند موارد زیر را مشاهده می کنید:
در شاخه اصلیمسیرهای بی نظیر:(از "git add/rm" استفاده کنید.هر دو اصلاح شده: Hello. py
چگونه درگیری ارائه می شود
When Git encounters a conflict during a merge, It will edit the content of the affected files with visual indicators that mark both sides of the conflicted content. These visual markers are:>>>>>>بشرجستجوی یک پروژه برای این شاخص ها در حین ادغام مفید است تا پیدا کنید که درگیری ها باید برطرف شود.
در اینجا برخی از مطالب که تحت تأثیر درگیری نیستنداین متن متناقض از اصلی است=======این متن متناقض از شعبه ویژگی است>>>>>>>شاخه ویژگی ؛
به طور کلی محتوای قبل از نشانگر ====== شاخه دریافت کننده است و قسمت پس از آن شاخه ادغام است.
پس از شناسایی بخش های متناقض ، می توانید وارد شوید و ادغام را به دلخواه خود برطرف کنید. هنگامی که شما آماده به پایان رساندن ادغام هستید ، تمام کاری که باید انجام دهید این است که افزودن git را در پرونده (های) متناقض اجرا کنید تا به Git بگویید که آنها حل شده اند. سپس ، شما یک تعهد عادی را برای تولید تعهد ادغام اجرا می کنید. این دقیقاً همان فرآیند تعهد یک عکس فوری معمولی است ، به این معنی که برای توسعه دهندگان عادی آسان است که ادغام خود را مدیریت کنند.
توجه داشته باشید که درگیری های ادغام فقط در صورت ادغام 3 طرفه اتفاق می افتد. نمی توان تغییرات متناقض در ادغام سریع به جلو را داشت.
خلاصه
این سند مروری بر دستور ادغام GIT است. ادغام یک فرآیند اساسی هنگام کار با GIT است. ما در مورد مکانیک داخلی در پشت یک ادغام و تفاوت بین ادغام سریع رو به جلو و ادغام سه طرفه ، بحث کردیم. برخی از ابرازهای کلیدی عبارتند از:
- ادغام GIT ، توالی های تعهدات را به یک تاریخ یکپارچه از تعهدات ترکیبی می کند.
- دو روش اصلی وجود دارد که git ادغام خواهد شد: سریع به جلو و سه راه
- GIT می تواند به طور خودکار تعهدات را ادغام کند مگر اینکه تغییراتی در هر دو توالی مرتکب ایجاد شود.
این سند یکپارچه و سایر دستورات GIT مانند: شعبه GIT ، GIT PULL و GIT FETCH را یکپارچه کرده است. برای اطلاعات بیشتر به صفحات مستقل مربوطه آنها مراجعه کنید.
آماده امتحان انشعاب هستید؟
این آموزش تعاملی را امتحان کنید.
تجارت گزینه های دودویی در ایران...
ما را در سایت تجارت گزینه های دودویی در ایران دنبال می کنید
برچسب :
نویسنده : زینالعابدین مراغهای
بازدید : <-PostHit->
تاريخ : شنبه
21 مرداد
1402 ساعت: 0:30