چطور با گیت رفتار کنیم؟ (برنچ‌ها)

سلام و روز بخیر خدمت شما همراهان هفتگی آموزش‌های پایه حوزه دواپس. این هفته هم در خدمت شما هستم با قسمت دوم آموزش گیت، سری‌ای که در آن قصد دارم تا یکدیگر یکی از مهم‌ترین ابزار‌های هر کسی که در صنعت تکنولوژی هست را با هم بررسی کرده و یاد بگیریم.در قسمت قبل با مفهوم گیت آشنا شده و دریافتیم که گیت چیست و چه کمک‌هایی به ما می‌کند، همچنین چگونگی نصب گیت و ساخت یک گیت ریپازیتوری‌ را هم در دسترس قرار دادیم؛ اما در این قسمت قصد داریم تا چگونگی کار کردن با گیت را یاد گرفته و شروع به استفاده از گیت کنیم.ریپازیتوری من در چه مرحله‌ای قرار دارد؟این موضوع اوقاتی که تازه شروع به کار روزانه می‌کنیم برای ما سوال می‌شود.این که دیروز چه کار‌هایی کردم، چه تغییراتی با تیم همسان نشده و در کدام قسمت پروژه در حال کار کردن هستم.جواب تمامی این سوالات با کامند زیر به شما داده می‌شود.# git statusاین دستور به شما این اجازه را می‌دهد تا فایل‌های تغییر کرده، فایل‌های اضافه شده، برنچی که بر روی آن کار می‌کنید و فایل‌های کامیت شده را مشاهده کرده و از اتفاقات گذشته خب باخبر شوید.چطور یک فایل را به ریپازیتوری گیت خودم اضافه کنم؟بعضی اوقات نیاز است تا یک فایل را به ریپازیتوری گیت خود اضافه کنید مثلا در هنگام برنامه نویسی نیاز به یک فایل جدید دارید.برای انجام این کار می‌توانید خیلی عادی یک فایل یا حتی ریپازیتوری داخلی جدید بسازی که برای هر کدام از این اتفاقات می‌توانید به ترتیب از دستورات زیر استفاده کنید:# touch FILE_NAME# mkdir DIRECTORY_NAMEدر ادامه جهت این موضوع که فایل‌ اضافه شده را به ریپازیتوری در حال بررسی گیت خود اضافه کنیم می‌توانیم از دو روش استفاده کنیم:اول راه این است که یک بار تمامی فایل‌های داخل دایرکتوری‌ای که در آن حضور داریم را به گیت ریپازیتوری با استفاده از دستور زیر اضافه کنیم:# git add .روش دوم این است که فایل هدف مورد نظر خود را با استفاده از دستور زیر به طور خاص به گیت ریپازیتوری اضافه کنیم:# git add FILE_PATHبا استفاده از دو دتسور بالا فایل شما به گیت ریپازیتوری اضافه شده و در قسمت استیجینگ یا تغییر وضعیت قرار خواهد گرفت و آماده جزی از پروژه شما شدن می‌شود.چطور فایل خود را از حالت تعیین وضعیت به قسمتی از گیت ریپازیتوری خود تغییر دهم؟به از اضافه کردن فایل به حالت استیجینگ حالا یک قدم به اضافه کردن فایل به پروژه خود نزدیک‌تر شدیم. در گیت بعد از اضافه کردن هر فایل یا ایجاد هر تغییر نیاز است تا یک توضیح درباره عمل انجام شده داده شود. این توضیح به دلیل مدیریت راحت تر پروژه در ادامه خواهد بود و در بازگشت دوباره جهت تصحیح دستورات و فایل‌های پروژه نیز کمک شایانی خواهد کرد.به ارائه توضیح یا دلیل اضافه شدن یا تغییر یک فایل در گیت کامیت کردن گفته می‌شود و فایل ها بعد از کامیت شدن به حالت commited در آمده و قسمتی از پروژه خواهند بود.جهت اضافه کردن کامیت به پروژه باید از دستور زیر استفاده کنیم:# git commit -m “TASK_DESCRIPTION”در دستور بالا به جای TASK_DESCRIPTION باید از توضیح مورد نظر خود برای این اتفاق در حال انجام استفاده کنید.در نظر داشته باشید که این توضیح نباید وابسته به زمان باشد، نباید خیلی پیچیده و غیر قابل فهم باشد، نباید زیاد طولانی باشد.این توضیحات همیشه در هر کمپانی یک سری قواعد داشته که در انجام هر کار به شما گفته می‌شود اما قواعد کلی همین موارد بالاست.تو این ریپازیتوری گیت چه گذشته؟در هنگام مدیریت سرویس قسمت مهمی که به ما کمک خواهد کرد تا توانایی تصمیم گیری درباره ادامه پروژه داشته باشیم اتفاقاتی است که تا کنون در گیت رخ داده.جدای بحث مدیریت نیز برنامه‌نویس‌ها جهت تصمیم گیری و حتی گزارش کارشان می‌توانند از این امکان در گیت استفاده کنند.جهت مشاهده تمام لاگ ها یا اتفاقات انجام شده در گیت می‌توانید از دستور زیر استفاده کنید:# git logاین دستور به شما اطلاعات زیادی درباره تاریخچه گیت ریپازیتوری و پروژه می‌دهد.این اطلاعات گیت هش شما، کسی که کامیت مورد نظر را قرار داده، زمان کامیت و متن کامیت را به شما نشان می‌دهد.در حالتی که می‌خواهید از این اطلاعات در یک خط بهره‌مند شوید یا در اسکریپتی از آن نتیجه‌ای حاصل کنید می‌توانید از دستور زیر جهت نمایش اطلاعات بالا در تنها یک خط استفاده کنید.# git log --oneline برنچ‌ها یا شاخه‌ها چیستند؟برنچ‌ها شاخه‌های مختلف یک برنامه می‌باشند؛ بدین معنا که مثلا یک پروژه یا همان گیت ریپازیتوری در ۳ حالت در دسترس قرار خواهد گرفت و هر سه حالت ممکن تبدیل به سه برنچ متفاوت خواهند شد. برنچ اصلی هر پروژه‌ای در حالت عادی master می‌باشد.مثلا فکر کنید به یک تیم، یک برنامه نویس جدید اضافه شده و علاقه به ساخت راه جدیدی در برنامه موجود از خود نشان می‌دهد.در این شرایط بدین جهت که تغییری در پروداکشن رخ ندهد می‌توانیم یک برنچ جدید برای برنامه نویس بسازیم تا جدای پروداکشن اصلی بتواند تغییرات مورد نظر خود را در برنچ خود ایجاد کرده و تغییرات را مشاهده کند.این اتفاق تاثیری بر روی پروژه نداشته و باعث افزایش سرعت و دقت توسعه نرم‌افزار خواهد شد. به این دلیل که بعد از تغییر در برنچ غیر اصلی در صورتی که تغییرات موفقیت آمیز بود می‌توانید برنچ غیر اصلی را با master مرج کرده یا یکی کنید و تغییرات را در برنچ اصلی داشته باشید.چطور یک برنچ جدید بسازیم و بین برنچ‌ها جا به جا شویم؟در حالت کلی برای این که بین یک برنچ و برنچ دیگر جا به جا شویم و حتی برنچ جدیدی بسازیم می‌توانیم از دستور زیر استفاده کنیم:# git checkout -b BRANCH_NAMEمثلا برای این که بین برنچ اصلی و برنچ خودمان به نام user-signup جا به جا شویم از دستور زیر استفاده می‌کنیم:# git checkout -b user-signupبرای این که موقعیت خودمان در داخل برنچ‌ها را مشاهده کنیم می‌توانیم از دستور زیر استفاده کنیم:# git branchخروجی این دستور تمامی برنچ‌های موجود بر روی آن ریپازیتوری می‌باشد و برنچ انتخاب شده نیز با یک علامت ستاره در سمت چپ آن معین می‌گردد.با هم کار کنیم.در نظر داشته باشید که برنامه‌نویس شماره ۱ شروع به توسعه یک قسمت از نرم افزار در برنچ خود می‌کند و کامیت ها و تمامی تغییرات آن بر روی برنچ خود انجام می‌شود. در این حالت برنچ مستر یک کامیت از برنچ برنامه نویس شماره ۱ عقب تر خواهد بود. حالا تیم بزرگ‌تر خواهد شد و یک برنامه نویس شماره۲ به تیم اضافه می‌گردد و شروع به کار بر روی قسمت دیگری از برنامه می‌کند.در نظر داشته باشید که در این حالت برنچ برنامه نویس شماره ۱، برنامه نویس شماره۲ و برنچ مستر نسبت به هم متفاوت خواهند بود.برای کار کردن با برنچ ها می‌توانید از دستورات مورد استفاده زیر استفاده کنید:برای ساخت یک برنچ جدید می‌توانید از دستور زیر استفاده کنید:# git branch NEW_BRANCH_NAMEاین دستور یک برنچ جدید برای شما خواهد ساخت.برای تغییر برنچ مورد استفاده می‌توانید از دستور زیر استفاده کنید:# git checkout TARGET_BRANCHاین دستور شما را به برنچ TARGET_BRANCH خواهد برد.برای ساخت یک برنچ جدید و تغییر فوری برنچ خود به آن شاخه از دستور زیر استفاده خواهیم کرد:# git checkout -b NEW_BRANCH_NAMEبرای حذف یک برنچ از دستور زیر استفاده می‌کنیم:# git checkout -d TARGET_BRANCHبرای پیدا کردن لیست تمامی برنچ‌های موجود در ریپازیتوری مورد نظر از دستور زیر استفاده خواهیم کرد:# git branchدر نظر داشته باشید که هر کامیتی در داخل هر برنچ انجام شود مختص به این برنج بوده و آخرین کامیت آن ثبت خواهد شد.به پایان این قسمت از آموزش گیت رسیدیم و در این مرحله مفاهیم کلی درباره چگونگی کار کردن و چیستی برنچ‌ها را در داخل گیت را با یکدیگر بررسی کردیم.در ادامه این سری با شما خواهم بود تا بتوانیم کار حرفه‌ای با گیت را یاد گرفته و در پروژه‌های خود استفاده کنیم.با تشکر از تیم ابرآراز که زمان لازم برای ساخت و نشر این مقاله را به من داد.تا هفته بعد...