branch برنچ گیت چیست؟آشنایی با دستورات کار با branch در گیت
گیت چیست ؟ چگونه از Git استفاده کنیم ؟ ما در مقالات پیشین به تفصیل در مورد این دو مفهوم برای شما صحبت کردیم و تلاش کردیم با آموزش گیت به صورت مرحله به مرحله کار با این ابزار مهم صنعت تکنولوژی را یاد بگیریم. حال در این مقاله و در راستای آشنایی و تسلط بر گیت قصد داریم تا توضیحاتی پیرامون branch برنچ گیت را باهم فرا بگیریم؛ با ما همراه باشید.
در مقالات پیشین با یادگیری گیت تلاش کردیم تا پروژههای در حال توسعه خود را مدیریت کنیم. در این قسمت از سری مجموعه مقالات آموزش گیت ، تلاش میکنیم با کسب اطلاعات بیشتر، سطح دانش زیرساختی خود را گسترش دهیم.
قسمت قبل درباره چگونگی استفاده از گیت، چگونگی ساخت یک گیت ریپازیتوری و چگونگی استفاده از آن با استفاده از branch برنچ گیت های مختلف، ایجاد تغییر در یک گیت ریپازیتوری، چگونه ثابت کردن این تغییر و اعمال آن بر روی گیت مشترک با بقیه همکاران بحث کردیم. با ما همراه باشید تا بیشتر در مورد این موضوع کمتر پرداخته شده بحث کنیم.
ادغام کردن چندین شاخه یا branch برنچ گیت
تصور کنید یکی از کارمندان قسمتی از پروژه را داخل branch برنچ گیت خود پیش برده است. حال مدیر قصد دارد تا برنامهای که توسط کارمند توسعه داده شده است را به بدنه پردازشی یا همان برنچ master اضافه کند. برای انجام این کار، مدیر میتواند با دستوری که در ادامه ذکر میکنیم از branch برنچ گیت که در آن حضور دارد به برنچ مستر تغییر مسیر دهد.
# git checkout master
علاوه بر آن، با استفاده از دستور زیر میتوان یک branch برنچ گیت را با برنچ مستر یکی کرده و مرج کند.
# git merge <<target_branch>>
مقداردهی اولیه در گیت ریپازیتوری
در گذشته با نحوه ساخت یک گیت ریپازیتوری، نحوه دریافت گیت ریپازیتوری در یک سرور یا دستگاه خصوصی خود و نحوه اضافهکردن تغییرات خود به گیت ریپازیتوری اصلی بحث کردیم. در جهان امروز، ارائه دهندگان زیادی برای گیت ریپازیتوری وجود دارند که از جمله مهمترین آنها میتوان به Github, Gitlab و Bitbucket اشاره کرد. (برای آشنایی بیشتر با مفهوم بیت باکت به مقالهی Bitbucket چیست مراجعه نمایید.)
برای این که یک گیت ریپازیتوری را در یکی از پلتفرمهای بالا مقداردهی کنیم، باید به قسمتی به نام رشته ارتباطی یا Connection String دسترسی داشته باشیم.
رشته ارتباطی یک URL میباشد که به ما نشان میدهد که دقیقا یک ریپازیتوری گیت در کجا قرار دارد؛ به طور مثال، برای یک پروژه به نام stories میتوان هر کدام از URL های زیر را فرض کرد.
https://github.com/arazcloud/stories.git
https://gitlab.com/arazcloud/stories.git
https://bitbucket.org/arazcloud/stories.git
برای اضافهکردن هر فایل به این ریپازیتوریها میتوانیم از دستور زیر استفاده کنیم:
# git remote add origin <<CONNECTION_STRING>>
این دستور به شما کمک میکند تا از این به بعد هر وقت در گیت ریپازیتوریای که در آن قرار دارید پوش یا تغییری انجام دهید در داخل پلتفرم ارائه دهنده گیت شما نیز آن تغییرات بعد از پوش و کامیت انجام شود و از داخل آن پلتفرمها در دسترس قرار گیرد. بعد از مقداردهی یک ریپازیتوری لوکال، شما به یک ریپازیتوری ریموت دسترسی خواهید داشت که اصولا در ارائهدهندگان گیت قرار خواهد داشت که در رشته ارتباطی در دسترس میباشد.
شما میتوانید لیست تمامی ریپازیتوریهای ریموت خود را با استفاده از دستور زیر به دست آورید.
# git remote -v
این دستور به شما تمامی ریپازیتوریهای ریموت گیت که به این گیت ریپازیتوری متصل هستند را ب نمایش میدهد.
پوش کردن گیت ریپازیتوری
بعد از انجام تغییرات و مشاهده آنها حال نوبت آن است که تغییرات را به گیت ریموت ریپازیتوری خود اضافه کنیم. برای انجام این کار کافیست از دستور زیر استفاده کنیم:
# git push origin master
این دستور بدان معناست که ریپازیتوری گیت موجود در این مکان را به گیت ریموت با نام origin اضافه کرده و این تغییر را در branch برنچ گیت master انجام میدهد.
وقتی در یک گیت ریپازیتوری شروع به تغییرات میکنیم همیشه گیت ریموت از ما عقبتر است. به همین دلیل بعد از چندین کامیت و تغییر در پروژه یک بار از این دستور استفاده میکنیم تا تغییرات در داخل گیت ریموت ریپازیتوری اعمال شود. وقتی با یک تیم برنامهنویس کار میکنیم، این اقدام باعث میشود که تغییرات اعمال شده در برنامه برای بقیه برنامهنویسان در داخل گیت ریموت ریپازیتوری در دسترس باشند.
کلون کردن گیت ریپازیتوری
وقتی با یک ریپازیتوری ریموت گیت کار میکنیم میتوانیم تمامی اطلاعات آن ریپازیتوری را بدون تغییر در داخل سرویس خود داشته باشیم. برای انجام این کار کافیست از دستور زیر استفاده کنیم:
# git clone << ssh link >>
قسمت ssh link یک شناساگر برای مسیر کلون کردن گیت ریپازیتوری میباشد که از گیت ریموت ریپازیتوری میتوانید آن را دریافت کنید. برای انجام این کار در گیت هاب و گیت لب میتوانید بعد از وارد شدن به گیت ریموت ریپازیتوری خود و باز کردن صفحه پروژه از بالا سمت راست صفحه قسمت clone را انتخاب کرده و هر کدام از دو حالت ssh و http را که دوست داشته انتخاب کنید و url مورد نظر را از این قسمت سرویس دریافت نمایید.
استفاده از این دستور باعث میشود که یک ریپازیتوری یا دایرکتوری در مسیری که این دستور اجرا شده است، با نام پروژه ساخته شود.
شما میتوانید بعد از کلون کردن این ریپازیتوری با استفاده از دستوری که در ادامه عنوان میکنیم اتفاقات افتاده در این گیت ریپازیتوری را مشاهده کنید:
# git log
پول کردن در گیت ریپازیتوری:
در مثالهای قبل مشاهده کردیم که چطور میتوانیم branch برنچ گیت مختلف را با برنچ مستر همگام کرده و مرج کنیم. وقتی به عنوان یک توسعه دهنده با یک تیم توسعه همکاری میکنید، مطمئنا علاقهای به انجام این کار نخواهید داشت. تمامی این اتفاقات میتواند در داخل یک گیت ریموت ریپازیتوری معتبر مانند github انجام شود. برای این انجام این کار میتوانیم branch برنچ گیت خود را با استفاده از دستور زیر به ریپازیتوری ریموت خود اضافه کنیم:
# git push origin <<My-Repo>>
بعد از این اتفاق میتوانید در گیت ریموت ریپازیتوری خود مشاهده کنید که یک کامیت جدید در برنچ مورد نظر اتفاق افتاده است. در کنار این قسمت شما میتوانید یک دکمه با عنوان pull request مشاهده کنید. بعد از کلیک بر روی این دکمه میتوان مشاهده کرد که چه تغییراتی در branch برنچ گیت پوش شده انجام شده است و تغییرات با برنچ مستر چه تفاوتی دارند.
در این صفحه میتوانید از دکمه create pull request استفاده کنید؛ این گزینه به شما اجازه میدهد که با یک عنوان و توضیح مختصر و همچنان ارائه لیبل و گزارش مورد نظر خود در سمت راست این پول ریکوئست را تایید کنید. در ادامه و بعد از انجام این مراحل با استفاده از گزینه marge pull request میتوانید مشاهده کنید که تغییرات با برنچ مستر ثبت شده و در اختیار شما قرار خواهد گرفت.
در نظر داشته باشید که در صورتی که در یک تیم بزرگ کار میکنید این تاییدیه برای مدیر گروه بوده و بعد از انجام کار ها در این قسمت، از گیت ریموت ریپازیتوری بعد از تایید تغییرات، آنها را با بدنه پروژه همگام میسازد.
دریافت تغییرات پروژه
با استفاده از دستور زیر میتوانید تغییرات موجود در نسخه مستر را از گیت ریموت ریپازیتوری خود دریافت کنید:
# git fetch origin master
حال میتوانید با استفاده از دستور زیر برنچ مستر خود را در داخل ریپازیتوری لوکال خود داشته باشید:
# git merge origin/master
برای انجام دو کار بالا شما میتوانید بدون استفاده از هر کدام از دستورات بالا تنها یک بار ریپازیتوری ریموت را در branch برنچ گیت مورد نظر خود pull کنید. این دستور در حقیقت، دو دستور بالا را تبدیل به یک دستور کرده است:
# git pull origin master
هر دو اتفاق بالا در قسمت لوکال با استفاده از دستور پول انجام خواهد شد.
مشکلات همگام سازی و مرج کردن:
همیشه قرار نیست یک مرج ریکوئست بدون مشکل انجام شود. گاهی یک مرج ریکوئست دچار کانفلیکت یا ایجاد مشکل در داخل کدهای برنامه نویسی شده میشود.
در نظر داشته باشید که یک برنامه نویس شروع به کار بر روی قسمتی از برنامه میکند و یک برنامهنویس دیگر نیز قسمتی از این کار را انجام میدهد اما در دو branch برنچ گیت مختلف این اتفاق خواهد افتاد. برنامه نویس اول سریعتر بوده و سریعتر با برنچ مستر همگام میشود و برنامه نویس دوم اندکی بعد اقدام به مرج کردن میکند.
آشنایی با مفهوم branch برنچ گیت ؛ حل مشکل همگام سازی
در صورتی که یک تغییر در برنامه وجود داشته باشد به مرج کانفلیکت یا مشکل همگام سازی برخورد خواهیم کرد. در یک ریپازیتوری گیت این مشکل به این صورت نمایش داده میشود که بالای قسمتی که در برنچ مستر وجود دارد یک متن با حالت:
<<<<<<<< HEAD
نمایش داده شده و در پایین تر نیز یک علامت:
=========
نمایش داده میشود که این موضوع به معنای این است که این قسمت از برنامه متعلق به برنچ مستر میباشد.
در پایین همین خط ها نیز قسمت تغییر پیدا کرده مشاهده میشود که در انتهای این قسمت با مدل زیر نمایش داده میشود:
>>>>>>>> USER
این بدان معناست که یوزری که درخواست مرج داده به نام USER با قسمتی از برنامه اصلی کانفلیکت یا ناهمگونی دارد. برای حل این مشکل میتوانید قسمتی که درست است را نگه داشته و بقیه خط ها را پاک کنید. در نظر داشته باشید که خطهای بالا که توسط خود گیت اضافه شده است را نیز حذف کنید و بعد از انجام این کار از دستورات زیر جهت حل مشکل استفاده کنید.
# git add <<Target_FIle>> # git merge
این قسمت از آموزش گیت به پایان رسید. ما در این مقاله تلاش کردیم تا در مورد چگونگی کار کردن و چیستی branch برنچ گیت را با هم بررسی کنیم. در ادامه این سری مقالات آموزشی با شما خواهیم بود تا بتوانیم کار حرفهای با گیت را فرا گرفته و در پروژههای خود از آن بهره ببریم.
چرا ابرآراز انتخاب مناسبی برای هاستینگ و میزبانی است؟
هاست ابری آراز برای افرادی طراحی شده است که به تعداد بالایی از ترافیک روزانه در وب سایت خود دست یافتهاند و تمایل دارند فعالیت خود را در سطحی حرفهایتر ادامه دهند. همچنین برای افرادی که به دنبال یک جایگزین مناسب برای کاهش دغدغههای مدیریت سرور در هاست اشتراکی هستند، خرید میزبانی ابری میتواند یک گزینه ایدهآل محسوب شود.
هاست ابری حتی برای کسانی که به تازگی فعالیت خود را آغاز کردهاند نیز میتواند یک انتخاب منطقی باشد؛ زیرا قیمت هاست ابری ابر آراز به دلیل استفاده از تکنولوژی ابری بسیار مناسب و مقرون به صرفه است و نگرانی شما را از هزینههای غیرمنطقی و سرسامآور برطرف میکند؛ با خرید هاست ابری پر سرعت ابر آراز از خدمات تیم پشتیبانی ما که از یک گروه حرفهای متخصص تشکیل شدهاند، در ۲۴ ساعت شبانهروز بهرهمند خواهید شد.