در این جلسه در مورد شاخه ها (branch) صحبت می کنیم. همانطور که قبلا توضیح داده ایم شاخه ها یک نسخه موازی (کپی) از پروژه اصلی هستند. زمانی که می خواهید ویژگی های جدیدی را در برنامه خود ایجاد کنید بهتر است از شاخه ها استفاده کنید تا اگر برنامه به مشکلی خورد (به طور مثال کدهای جدید با کدهای قبلی ناسازگاری داشتند) بتوانید بدون زحمت به نسخه قبلی برنامه تان برگردید.
شاخه ها history یا تاریخچه مستقل خودشان را دارند و تغییر در یک شاخه روی شاخه های دیگر اثری نخواهد داشت. البته اگر در آخر قابلیت جدید شما با برنامه سازگار بود و تکمیل کدها نهایی شد می توانید شاخه را در شاخه اصلی (master) یا هر شاخه دیگری ادغام کنید تا تمام تاریخچه و موارد دیگر یکجا قرار بگیرند. معمولا مزیت استفاده از شاخه ها در چند مورد زیر خلاصه می شود:
شاخه پیش فرض هر repository مستر (master) نام دارد. بنابراین هر repository حداقل یک شاخه به نام master خواهد داشت. برای ایجاد شاخه های بیشتر می توانیم از دستور زیر استفاده کنیم:
$ git branch amazing_new_feature
این دستور یک شاخه جدید به نام amazing_new_feature ایجاد می کند. در حال حاضر این شاخه هیچ تفاوتی با شاخه master ما ندارد چرا که هنوز چیزی را تغییر نداده ایم.
نکته: استفاده از دستور git branch به صورت خالی به شما لیستی از شاخه های موجود را می دهد. در صورتی که به آن r- را نیز اضافه کنید (یعنی git branch -r) فقط شاخه هایی را می دهد که روی سرور (remote) قرار دارند.
برای مشاهده شاخه های موجود می توانید دستور git branch را اجرا کنید. با اجرای این دستور در پوشه git_exercise خودمان باید با چنین خروجی روبرو شویم:
$ git branch amazing_new_feature * master
یعنی دو شاخه داریم: یکی amazing_new_feature و دیگری master. در حال حاضر شاخه master دارای یک علامت ستاره (*) است و این علامت یعنی فعلا در شاخه master قرار داریم. ما می خواهیم ویژگی های جدید را در شاخه amazing_new_feature پیاده سازی کنیم بنابراین باید شاخه کاری خود را تغییر داده و به amazing_new_feature برویم. برای این کار می توان از دستور Git checkout استفاده کرد:
$ git checkout amazing_new_feature Switched to branch 'amazing_new_feature'
حالا اگر git branch را اجرا کنید این پاسخ را می گیرید:
$ git branch * amazing_new_feature master
حالا شاخه amazing_new_feature ستاره دار شده است بنابراین در این شاخه هستیم.
یک فایل متنی ساده دیگر به نام feature.txt بسازید (در همان پوشه git_exercise). حالا آن را به stage اضافه می کنیم:
$ git add feature.txt
سپس تغییرات حاصل شده تا این قسمت را commit می کنیم:
$ git commit -m "New feature complete."
حالا به شاخه master برمی گردیم:
$ git checkout master
اگر به پوشه git_exercise بروید متوجه می شوید که فایل feature.txt ناپدید شده است! دلیل آن هم این است که این فایل هیچ وقت در شاخه master ساخته نشده است بنابراین در این قسمت نیز وجود ندارد! برای به وجود آوردن آن می توانیم از دستور git merge استفاده کنیم تا دو شاخه در هم ادغام شوند:
git merge amazing_new_feature
حالا که آن ها را در هم ادغام کرده ایم نیازی به شاخه amazing_new_feature نداریم و می توانیم آن را به شکل زیر حذف کنیم:
git branch -d amazing_new_feature
برای استفاده از git باید ابتدا آن را نصب کنید. پس از نصب بهتر است نام و ایمیل خود را ثبت کنید تا ایجاد کننده تغییرات مشخص شود:
$ git config --global user.name "My Name" $ git config --global user.email myEmail@example.com
می توانید با استفاده از دستور git init یک repository جدید ایجاد کنید:
$ cd Desktop/git_exercise/ $ git init
دستور git status به شما وضعیت stage را می دهد:
$ git status On branch master Initial commit Untracked files: (use "git add ..." to include in what will be committed) hello.txt
دستور git add یک فایل را به stage اضافه می کند. به زبان ساده تر تغییرات آن فایل را دنبال خواهد کرد:
$ git add hello.txt
اگر چندین فایل در دیرکتوری خود دارید و می خواهید همگی یکجا اضافه شوند از دستور زیر استفاده کنید:
$ git add -A
A مخفف All به معنی «همه» است.
دستور git commit یک commit ایجاد می کند:
$ git commit -m "Initial commit."
پیام داخل quotation ها مربوط به توضیحات این commit هستند بنابراین می توانید هر مقداری را در آن بنویسید. سعی کنید توضیحاتی دقیق و خوانا بنویسید.
اگر بخواهیم پروژه محلی خود را به سرور منتقل کنیم git remote add به ما کمک می کند تا به سرور متصل شویم:
git remote add origin https://github.com/Amir-Zouerami/roxo-ir-sample.git
سپس با دستور git push میتوان commit های جدید را به سرور آپلود کرد:
$ git push origin master
در این دستور origin نام repository ما و master نام شاخه مورد نظر می باشد.
همچنین برای clone کردن (کپی گرفتن) از repository ها می توان از دستور git clone استفاده کرد:
$ git clone https://github.com/Amir-Zouerami/roxo-ir-sample.git
در صورتی که می خواهید فایل ها را از سرور روی هارد دیسک خود بیاورید می توانید از دستور pull استفاده کنید:
$ git pull origin master
امیدوارم از این قسمت لذت برده باشید. در قسمت بعد به بررسی موارد پیشرفته تر خواهیم پرداخت.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.