یکی از سوالاتی که معمولا در ذهن هر کاربر گیت و گیت هاب ممکن است شکل بگیرد این است که شخصی به repository من در گیت هاب مراجعه کرده و از آنجائی که پروژه به صورت public بوده تغییراتی را قرار در درون آن commit کرده است. حالا من می خواهم بر روی پروژه خودم کار کنم و آن را توسعه دهم، الان این تغییرات بر روی سیستم من موجود نیست آیا باید به صورت دستی این تغییرات را بر روی سیستم خودم اعمال کنم ؟ در این گونه موارد چه کاری باید انجام دهم ؟ در این جلسه می خواهیم به این دو پرسش جواب دهیم.
برای ایجاد تغییرات بر روی یک پروژه دو راه حل وجود دارد. که در این جلسه تنها راه حل نخست را به شما آموزش می دهیم و با راه حل دوم را در جلسات آینده آشنا می شویم. در این راه حل، می توانیم تغییرات را با استفاده از خود گیت هاب به صورت آنلاین انجام داده و آن را commit کنیم.
در این جلسه، بر روی فایل های پروژه جلسه قبل که در درون گیت هاب آپلود کرده بودیم کار می کنیم پروژه جلسه قبل را با هم تکمیل کرده و مسیر آموزش گیت هاب را مرحله به مرحله کامل می کنیم. اگر پروژه جلسه قبل بر روی سیستم شما موجود نیست می توانید به جلسه قبل مراجعه کرده و از قسمت دانلود ها فایل مربوط به آن جلسه را دانلود کنید.
Pull کردن پروژه
Pull کردن نقطه مقابل push کردن است. در push کردن ما پروژه را بر روی گیت هاب بروز رسانی می کنیم. در نقطه مقابل در pull کردن پروژه را از گیت هاب بر روی سیستم خودمان بروز رسانی می کنیم. در ادامه این قسمت با pull کردن آشنا می شویم.
جهت انجام تغییرات برای اینکه آموزش این جلسه به پروژه واقعی نزدیکتر شود، با استفاده از اکانت گیت هاب asascript که به عنوان collaborator پروژه شناخته می شود می خواهیم تغییراتی را در پروژه ایجاد نمائیم.
برای اضافه کردن collaborator مراحل را به صورت زیر طی می کنیم.
با زدن دکمه invite a collaborator منوئی به صورت modal باز می شود که در درون آن می توانیم همکار خود را اضافه کنیم. در اینجا ما اکانت asascript را اضافه می کنیم.
نکته: بعد از اضافه کردن collaborator می بایست طرف مقابل درخواست را قبول کند. درخواست به ایمیل collaborator ارسال خواهد شد که با زدن بر روی لینک accept می تواند درخواست را قبول کند.
حالا با ورود به اکانت asascript پروژه را باز می کنیم و اقدام به اصلاح بعضی از قسمت های کد می کنیم.
بر روی فایل مورد نظر که می خواهیم تغییراتی در آن ایجاد کنیم، کلیک می کنیم. در قسمت بالا سمت راست همانطور که در شکل زیر مشخص شده است بر روی دکمه خودکار می زنیم.
در صفحه باز شده تغییراتی را به صورت زیر بر روی فایل index.html وارد می کنیم.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p>Lorem Ipsum</p>
</body>
</html>
و به راحتی آن را commit می کنیم. برای commit کردن می توانید به پائین صفحه مراجعه کنید و یک title را وارد نمائید تا commit شما به عنوان یک همکار توسعه دهنده ثبت شود.
نکته: دقت داشته باشید که تغییرات را بر روی چه شاخه ای انجام می دهید. همانطور که در شکل بالا نشان داده شده است می توانید شاخه مد نظر خود را وارد نمائید تا در آن شاخه تغییرات ثبت شود.
در اینجا ما تغییرات را بر روی شاخه development کامیت می کنیم. برای تغییر شاخه می بایست در تب code همان صفحه اصلی بر روی شاخه development کلیک کنیم.
اگر دقت کنید شاخه تغییر پیدا کرده است. حالا تغییرات را وارد کنید و سپس آن را کامیت کنید. توجه داشته باشید که کاربر ما در اینجا asascript است.
به پروژه جلسه قبل بر می گردیم اگر به این پروژه بر روی سیستم دسترسی ندارید می تونید از جلسه قبل آن را دانلود کنید. و ادامه این آموزش را مطالعه نمائید.
ناحیه دستوری git bash را در پوشه جلسه قبل باز کنید و یکبار git log بگیرید.
$ git log
commit 86cc1f35b6ad0eb4547cab68f364b2752e6282e3 (HEAD -> development, origin/development)
Author: tntt-co <tntt.co@gmail.com>
Date: Mon Apr 12 16:45:26 2021 +0430
development branch paragraph added
commit 46645fa2cdd08083ea6fc425258d942791c5a3b7 (origin/master, master)
Author: tntt-co <tntt.co@gmail.com>
Date: Mon Apr 12 15:10:02 2021 +0430
First step of project
اگر یادتان باشد در جلسه قبل یک commit بر روی شاخه master قرار دادیم و یک commit بر روی شاخه development و هر دو موارد را بر روی گیت هاب push کردیم.
فرض کنید می خواهیم بر روی پروژه شروع به کار کنیم. از آنجا که پروژه های گیت معمولا به صورت اشتراکی انجام می شود ممکن است همکاران شما بر روی پروژه تغییراتی را ایجاد کرده باشند و شما می خواهید ادامه آن تغییرات را انجام دهید. بدین منظور حتما شما به عنوان همکار باید تغییرات گیت را بر روی سیستم خود انتقال دهید. برای انجام این کار می بایست دستور pull گیت استفاده کنید تا تغییرات براساس اصول شاخه بندی بر روی سیستم شما کپی شود.
$ git pull origin development
و در خروجی داریم:
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 783 bytes | 34.00 KiB/s, done.
From https://github.com/tntt-co/asascript-html
* branch development -> FETCH_HEAD
86cc1f3..665ec60 development -> origin/development
Updating 86cc1f3..665ec60
Fast-forward
index.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
اگر به پروژه سر بزنیم و دوباره git log بگیریم داریم:
commit 665ec6077a8762384b81e55dc6796089f7c42703 (HEAD -> development, origin/development)
Author: asascript <71071572+asascript@users.noreply.github.com>
Date: Sat Apr 17 11:48:40 2021 +0430
index,html updated to the new version
commit 86cc1f35b6ad0eb4547cab68f364b2752e6282e3
Author: tntt-co <tntt.co@gmail.com>
Date: Mon Apr 12 16:45:26 2021 +0430
development branch paragraph added
commit 46645fa2cdd08083ea6fc425258d942791c5a3b7 (origin/master, master)
Author: tntt-co <tntt.co@gmail.com>
Date: Mon Apr 12 15:10:02 2021 +0430
First step of project
همانطور که مشاهده می کنید کامیت index.html updated to the new version به سیستم ما اضافه شده است و حالا می توانیم با خیالی آسوده پروژه را توسعه دهیم.
Clone کردن پروژه
ممکن است که بخواهید در یک پروژه همکاری داشته باشید و یا اینکه پروژه از روی سیستم شما پاک شده باشد. در این شرایط چه کاری باید انجام دهیم ؟ در این شرایط می بایست پروژه را از سایت گیت هاب به سیستم خودمان انتقال دهیم. به این کار در اصطلاح clone کردن پروژه می گویند. با clone کردن، بروز ترین نسخه پروژه به طور کامل از گیت هاب به روی سیستم شما کپی خواهد شد. این فرآیند به دو روش امکان پذیر است.
در روش اول می توانیم به صورت مستقیم فایل زیپ پروژه را از سایت گیت هاب دانلود کنیم.
با زدن بر روی Download zip می توانیم پروژه را بر روی سیستم خودمان دانلود کنیم و به راحتی با extract کردن آن روی سیستم، در توسعه پروژه شریک شویم.
اما در روش دوم که کمی حرفه ای تر است می توانیم با کپی کردن لینک کلون GitHub که در شکل بالا به وضوح مشخص است و استفاده از دستور git clone بر روی سیستم خودمان پروژه را به سیستم خودمان بیاوریم.
بدین منظور ابتدا یک پوشه جدید به نام asasscript-html می سازیم و در درون آن git bash here می کنیم و سپس کد زیر را در درون آن وارد می کنیم.
$ git clone https://github.com/tntt-co/asascript-html.git
که در خروجی داریم:
Cloning into 'asascript-html'...
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 12 (delta 3), reused 7 (delta 1), pack-reused 0
Unpacking objects: 100% (12/12), 1.52 KiB | 23.00 KiB/s, done.
حالا با مراجعه به پوشه جدید ساخته شده، ملاحظه می کنیم که نسخه ای از پروژه در آن قرار بارگذاری شده است.
جمع بندی:
در این جلسه روش بروز رسانی پروژه در درون گیت هاب را مورد بررسی قرار دادیم و با دستورهای pull و clone آشنا شدیم. در ادامه با آوردن یک پروژه کاربردی توانستیم به صورت عینی با دستورات pull و clone آشنا شویم.