مفاهیم clone و pull

img
img
img
img
shape
shape
blog-details
28
فروردین
مفاهیم clone و pull
نویسنده : محمدرضا لیایی
زمان مطالعه : 15 دقیقه

یکی از سوالاتی که معمولا در ذهن هر کاربر گیت و گیت هاب ممکن است شکل بگیرد این است که شخصی به repository من در گیت هاب مراجعه کرده و از آنجائی که پروژه به صورت public بوده تغییراتی را قرار در درون آن commit کرده است. حالا من می خواهم بر روی پروژه خودم کار کنم و آن را توسعه دهم، الان این تغییرات بر روی سیستم من موجود نیست  آیا باید به صورت دستی این تغییرات را بر روی سیستم خودم اعمال کنم ؟ در این گونه موارد چه کاری باید انجام دهم ؟ در این جلسه می خواهیم به این دو پرسش جواب دهیم. 

برای ایجاد تغییرات بر روی یک پروژه دو راه حل وجود دارد. که در این جلسه تنها راه حل نخست را به شما آموزش می دهیم و با راه حل دوم را در جلسات آینده آشنا می شویم. در این راه حل، می توانیم تغییرات را با استفاده از خود گیت هاب به صورت آنلاین انجام داده و آن را commit کنیم.
در این جلسه، بر روی فایل های پروژه جلسه قبل که در درون گیت هاب آپلود کرده بودیم کار می کنیم پروژه جلسه قبل را با هم تکمیل کرده و مسیر آموزش گیت هاب را مرحله به مرحله کامل می کنیم. اگر پروژه جلسه قبل بر روی سیستم شما موجود نیست می توانید به جلسه قبل مراجعه کرده و از قسمت دانلود ها فایل مربوط به آن جلسه را دانلود کنید.

Pull کردن پروژه

Pull کردن نقطه مقابل push کردن است. در push کردن ما پروژه را بر روی گیت هاب بروز رسانی می کنیم. در نقطه مقابل در pull کردن پروژه را از گیت هاب بر روی سیستم خودمان بروز رسانی می کنیم. در ادامه این قسمت با pull کردن آشنا می شویم.

جهت انجام تغییرات برای اینکه آموزش این جلسه به پروژه واقعی نزدیکتر شود، با استفاده از اکانت گیت هاب asascript که به عنوان collaborator پروژه شناخته می شود می خواهیم تغییراتی را در پروژه ایجاد نمائیم.

برای اضافه کردن collaborator مراحل را به صورت زیر طی می کنیم.

github session 2 image 1

با زدن دکمه invite a collaborator منوئی به صورت modal باز می شود که در درون آن می توانیم همکار خود را اضافه کنیم. در اینجا ما اکانت asascript را اضافه می کنیم.

 

نکته: بعد از اضافه کردن collaborator می بایست طرف مقابل درخواست را قبول کند. درخواست به ایمیل collaborator ارسال خواهد شد که با زدن بر روی لینک accept می تواند درخواست را قبول کند.

 حالا با ورود به اکانت asascript پروژه را باز می کنیم و اقدام به اصلاح بعضی از قسمت های کد می کنیم. 

بر روی فایل مورد نظر که  می خواهیم تغییراتی در آن ایجاد کنیم، کلیک می کنیم. در قسمت بالا سمت راست همانطور که در شکل زیر مشخص شده است بر روی دکمه خودکار می زنیم. 

github session 2 image 2

در صفحه باز شده تغییراتی را به صورت زیر بر روی فایل 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 شما به عنوان یک همکار توسعه دهنده ثبت شود.

github session 2 image 3

 

نکته: دقت داشته باشید که تغییرات را بر روی چه شاخه ای انجام می دهید. همانطور که در شکل بالا نشان داده شده است می توانید شاخه مد نظر خود را وارد نمائید تا در آن شاخه تغییرات ثبت شود.

 در اینجا ما تغییرات را بر روی شاخه development کامیت می کنیم. برای تغییر شاخه می بایست در تب code همان صفحه اصلی بر روی شاخه development کلیک کنیم.

github session 2 image 4

اگر دقت کنید شاخه تغییر پیدا کرده است. حالا تغییرات را وارد کنید و سپس آن را کامیت کنید. توجه داشته باشید که کاربر ما در اینجا 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 کردن، بروز ترین نسخه پروژه به طور کامل از گیت هاب به روی سیستم شما کپی خواهد شد. این فرآیند به دو روش امکان پذیر است.

در روش اول می توانیم به صورت مستقیم فایل زیپ پروژه را از سایت گیت هاب دانلود کنیم.

github session 2 image 5

با زدن بر روی 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  آشنا شویم.

لیست قسمت های این دوره:
رایگان 20 دقیقه
رایگان 15 دقیقه