مقدمه
این مقاله سومین قسمت از مجموعه «استفاده از گیت» است. فرض بر این است که هم مقاله نصب و هم مقاله نحوه استفاده موثر از git را خوانده اید.
در دنیای سیستم های کنترل نسخه، GIT بدون شک یکی از بهترین ها از نظر انعطاف پذیری است. یادگیری نحو و فهمیدن اینکه git چگونه می تواند به بهترین وجه گردش کار و محیط شما را ارائه دهد بسیار آسان است.
این آموزش نحوه ایجاد دو شاخه (مستر و توسعه) و نحوه ادغام کدها از مرحله توسعه تا تولید را به شما آموزش می دهد.
یک شاخه، در هسته خود، یک سری منحصر به فرد از تغییرات کد با یک نام منحصر به فرد است. هر مخزن می تواند یک یا چند شعبه داشته باشد.
به طور پیش فرض اولین شاخه “مستر” نامیده می شود.
مشاهده Branches
قبل از ایجاد شاخههای جدید، میخواهیم همه شعبههای موجود را ببینیم. با تایپ کردن موارد زیر می توانیم تمام شاخه های موجود را مشاهده کنیم:
git branch -a
اضافه کردن “-a” به انتهای دستور به GIT می گوید که ما می خواهیم همه شاخه های موجود را ببینیم، از جمله آنهایی که در فضای کاری محلی خود نداریم.
خروجی مشابه موارد زیر خواهد بود:
* master remotes/origin/master
ستاره کنار “master” در خط اول خروجی نشان می دهد که ما در حال حاضر در آن شاخه هستیم. خط دوم به سادگی نشان می دهد که در کنترل از راه دور ما که مبدا نامگذاری شده است، یک شاخه واحد وجود دارد که به آن master نیز می گویند.
اکنون که می دانیم چگونه شاخه ها را مشاهده کنیم، زمان آن رسیده است که اولین شاخه خود را ایجاد کنیم.
ایجاد Branches
همانطور که در ابتدای این مقاله گفته شد، ما می خواهیم یک توسعه و یک راه اندازی تولید برای محیط کدنویسی خود داشته باشیم.
ما میخواهیم با شاخه پیشفرض «مستر» بهعنوان تولید خود رفتار کنیم و بنابراین باید یک شاخه واحد برای توسعه یا پیشتولید ایجاد کنیم.
برای ایجاد یک شاخه جدید به نام develop، عبارت زیر را تایپ کنید:
git checkout -b develop
با فرض اینکه هنوز شاخه ای به نام “توسعه” نداریم، خروجی به صورت زیر خواهد بود:
Switched to a new branch 'develop'
در مورد شعبهای با آن نام از قبل موجود است، GIT به ما میگوید:
fatal: A branch named 'develop' already exists.
با استفاده از دستور git checkout می توانید بین دو شاخه خود به عقب و جلو بروید:
git checkout master
یا
git checkout develop
با فرض وجود شاخه ای که می خواهید به آن سوئیچ کنید، خروجی مشابه زیر را خواهید دید:
Switched to branch 'master'
اگر سعی کنید به شعبهای تغییر دهید که وجود ندارد، مانند
git checkout nosuchbranch
Git به شما می گوید:
error: pathspec 'nosuchbranch' did not match any file(s) known to git.
اکنون که چندین شعبه داریم، باید از آنها به خوبی استفاده کنیم. در سناریوی خود، ما از شاخه “توسعه” خود برای آزمایش تغییرات خود و از شاخه اصلی برای انتشار آنها برای عموم استفاده می کنیم.
برای نشان دادن این فرآیند، باید به شاخه توسعه خود برگردیم:
git checkout develop
ایجاد تغییرات در شاخه توسعه ما
در این شاخه، یک فایل خالی جدید به نام “develop” ایجاد می کنیم. تا زمانی که آن را به شاخه اصلی ادغام نکنیم (در مرحله زیر)، در آنجا وجود نخواهد داشت.
touch develop
درست مانند آموزش قبلی، باید به git بگوییم که می خواهیم این فایل جدید را ردیابی کنیم.
میتوانیم فایل “develop” را با تایپ کردن اضافه کنیم:
git add develop
مجموعه دستورات بالا یک فایل خالی به نام “develop” ایجاد می کند و آن را به GIT اضافه می کند.
ما همچنین باید این فایل را commit کنیم، که این فایل را به شاخه ای که در حال حاضر در آن هستیم، که “توسعه” است، پیوست می کند.
git commit -m "develop file" develop
این فایل اکنون در شاخه توسعه وجود دارد. همانطور که می خواهیم بفهمیم، در شاخه اصلی وجود ندارد.
ابتدا، میخواهیم تأیید کنیم که در حال حاضر در شاخه توسعه هستیم. ما می توانیم این کار را با تایپ زیر انجام دهیم:
git branch
خروجی باید مشابه شکل زیر باشد:
* develop master
قبلاً فهمیدیم که ستاره کنار نام شعبه نشان می دهد که ما در حال حاضر در آن شاخه هستیم.
اجرای دستور “ls” به ما نشان می دهد که این دو فایل وجود دارند:
ls
خروجی به ما نشان می دهد که هر دو فایل ما به ترتیب با نام های “file” و “develop” یافت می شوند:
develop file
کد ادغام بین شاخه ها
بخش جالب بعد از اینکه به شاخه اصلی خود برگشتیم اتفاق میافتد که میتوانیم با دستور git checkout انجام دهیم:
git checkout master
برای اطمینان از اینکه ما در شاخه اصلی هستیم، می توانیم موارد زیر را تایپ کنیم:
git branch
خروجی به ما می گوید که کدام شاخه هستیم که با ستاره نشان داده شده است.
develop * master
با اجرای مجدد “ls”، به نظر می رسد که فایل جدید ما گم شده است.
file
گم نشده است – در شاخه توسعه ما و ما در شاخه اصلی خود هستیم.
در سناریوی ما، این فایل هر گونه تغییر در هر فایل (یا یک فایل کاملاً جدید) را نشان می دهد که تمام آزمایشات را در شاخه توسعه ما گذرانده است و آماده تولید است. فرآیند جابجایی کد بین شاخه ها (اغلب از توسعه به تولید) به عنوان ادغام شناخته می شود.
مهم است که هنگام ادغام به یاد داشته باشیم که می خواهیم در شاخه ای باشیم که می خواهیم در آن ادغام شویم.
در این مورد، ما می خواهیم از شاخه توسعه خود، جایی که فایل “develop” وجود دارد، به شاخه اصلی خود ادغام کنیم.
با در نظر گرفتن این موضوع، با توجه به اینکه در حال حاضر در شاخه اصلی هستیم، تنها کاری که باید انجام دهیم این است که دستور merge را اجرا کنیم.
یکی از گزینه هایی که می توانیم به دستور merge ارسال کنیم، یعنی “–no-ff”، به این معنی است که می خواهیم git تمام پیام های commit را قبل از ادغام حفظ کند. این امر ردیابی تغییرات را در آینده آسان تر می کند.
برای ادغام تغییرات از شاخه توسعه به شاخه اصلی، عبارت زیر را تایپ کنید:
git merge develop --no-ff
خروجی دستور مشابه زیر خواهد بود:
Merge made by the 'recursive' strategy. 0 files changed create mode 100644 develop
اجرای مجدد دستور ls تأیید می کند که فایل “develop” ما اکنون در شاخه اصلی ما است.
develop file
آخرین کاری که اکنون باید انجام دهیم، برای ایجاد این تغییر در سرور راه دور، فشار دادن تغییرات است که می توانیم با کمک دستور git push انجام دهیم.
git push
خروجی مشابه زیر را خواهید دید که تأیید می کند که از شاخه توسعه خود به شاخه اصلی در سرور راه دور خود ادغام شده اید:
Counting objects: 4, done. Delta compression using up to 2 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 332 bytes, done. Total 3 (delta 1), reused 0 (delta 0) To ssh://[email protected]/repository 9af2dcb..53649cf master -> master
نتیجه
با دنبال کردن آموزش بالا، باید یک راهاندازی گردش کار دو شاخهای داشته باشید و امیدواریم درک درستی در مورد نحوه عملکرد انشعاب در GIT داشته باشید. نظر خود را در نظرات با ما در میان بگذارید!