آموزش مبتدی Git: بخش سوم

Pushing git to remote repositories
Pushing git to remote repositories

به بخش پایانی آموزش مبتدی سیستم کنترل نسخه گیت خوش آمدید. در بخش قبلی به دستورات تکمیلی کار با گیت اشاره شد که مطالعه آن پیش از یادگیری مطالب این بخش توصیه می‌شود:

https://vrgl.ir/0JsOI

تا به الان تمام موارد گفته شده به کار با گیت در ریپو های local که بر روی سیستم هر شخص قرار دارد مربوط بوده است. در این بخش به اشتراک گذاری ریپو ها و کار با گیت به صورت remote اشاره خواهیم کرد. نوبت اشاره به بخش سیستم های توزیع شده است. وبسایتی که در این بخش برای میزبانی ریپو گیت استفاده خواهیم کرد، گیت‌هاب می‌باشد:

https://github.com/

در صورت داشتن حساب کاربری به آن وارد و در غیر این صورت یک حساب کاربری جدید ایجاد کنید.

سپس از منوی سمت راست بالا برای ایجاد یک ریپو جدید اقدام کنید.

نام مناسب برای ریپو انتخاب کنید. اگر چیزی به ذهنتان خطور نمی‌کند گیت نامی به شما پیشنهاد می‌دهد.

به دلخواه توضیحاتی به ریپو خود اضافه کنید اما انجام این کار اجبار نمی‌باشد. گزینه های Public و Private برای مانند دسترسی محیط های اجتماعی می‌باشند. در حالت Private فقط شما و افرادی که انتخاب می‌کنید حق دیدن و ارسال کامیت به این ریپو را خواهند داشت و در مقابل آن ریپو Public به همه اجازه مشاهده ریپو شما را می‌دهد. در حال حاضر به دلایل تحریم غرب دسترسی به ریپو Private ممکن نمی‌باشد و فعلا راه حل مناسب برای ریپو های خصوصی استفاده از میزبان دیگری مانند مایکروسافت آژور دوواپس (Azure DevOps) و گیت‌لب (GitLab) است که در این مطلب به مایکروسافت آژور و در مطالب بعدی به گیت‌لب اشاره خواهیم کرد. فعلا با هدف یادگیری یک ریپو عمومی (Public) در گیت‌هاب ایجاد کنید.

و در این بخش حق انتخاب ایجاد فایل readme.md برای ارائه توضیحات، فایل gitignore برای چشم پوشی از فایل های دیگر و در نهایت مجوز نحوه استفاده از پروژه خود خواهید داشت.

روش های زیادی برای اتصال به ریپو میزبانی شده وجود دارد که اتصال SSH بیشترین امنیت را به ما ارائه می‌دهد اما صرفا برای سادگی از HTTPS استفاده خواهیم کرد. آدرس گیت ریپو خود را کپی کنید. به فرآیند راه اندازی ریپو در سیستم شخصی clone کردن می‌گویند که با دستور زیر ممکن است:

$ git clone <URL>

هنگام clone کردن می‌توانید نام کاربری و رمز عبور خود را همراه نشانی ریپو وارد کنید. برای مثال:

$ git clone https://<USERNAME>@github.com/username/repository.git

بعد از وارد کردن نام کاربری، گیت‌هاب از شما درخواست خواهد کرد تا رمز عبور خود را وارد کنید.

یک پوشه ایجاد کرده و درون آن ریپوی خود را clone کنید.

زمانی که پروژه گیت clone می‌شود به وجود origin پی خواهید برد.

گفتیم که گیت یک سیستم توزیع شده است و دسترسی به آن در یک سرور متمرکز نیست. زمانی که remote به سیستم شما اضافه می‌شود در واقع یک branch برای master در گیت local و یک branch به نام origin/master متعلق به remote دارید.

https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches
https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches

برای مشاهده آدرس origin از دستور زیر استفاده کنید:

$ git remote -v

تغییری در ریپو ایجاد و آن را ثبت کنید. کامیت شما فقط به ریپو local اضافه خواهد شد. همانطور که در بالا مشاهده می‌کنید دو آدرس برای fetch و push وجود دارد. دستور fetch برای فراخوانی آخرین تغییرات شاخه origin و دستور push برای ارسال تغییرات به remote کاربرد دارند:

$ git fetch

و

$ git push

اگر هنگام clone اطلاعات ورود خود را وارد نکرده‌اید، گیت‌هاب از شما درخواست وارد کردن آن خواهد کرد.

کامیت ریپو local با موفقیت در ریپو remote ثبت گردیده است. برای واکشی تغییرات، افراد تیم شما می‌توانند از دستور pull استفاده کنند:

$ git pull

? دستور pull همزمان fetch را هم انجام می‌دهد. دستور fetch فقط تغییرات ریپو remote را فراخوانی می‌کند اما کامیت آن را به تاریخچه local اضافه نمی‌کند. برای اعمال تغییرات fetch باید عمل merge همراه با شاخه معادل local صورت گیرد. برای مثال برای شاخه master تغییرات remote اینگونه اعمال می‌شوند:

$ git merge origin/master

دستور pull تغییرات fetch را در ریپو local علاوه بر remote اعمال کرده و خودکار یک merge انجام می‌دهد.

Ubuntu.exe ?
Ubuntu.exe ?

توجه داشته باشید که دستور push بطور پیش فرض فقط برای شاخه master تغییرات را ارسال می‌کند.

اگر شاخه ای ایجاد و تغییرات آن را push کنید با خطا مواجه خواهید شد. باید خود شاخه هم ارسال کنید:

$ git push -u origin <BRANCH>

معادل شاخه ارسال شده در remote ایجاد شد. این شاخه در سایت گیت‌هاب هم قابل مشاهده است.

با تغییر شاخه می‌توان ساختار هر کدام را مشاهده کرد.

اما دقت داشته باشید که شاخه های جدید مستقیما به ریپو local دیگران اضافه نخواهد شد.

ریپو شما
ریپو شما

دیگران پس از pull کردن شاخه ها، نتیجه متفاوتی در فهرست شاخه ها خواهند داشت.

ریپو بقیه
ریپو بقیه

برای انتقال شاخه از remote به local تنها کافی است عمل checkout صورت گیرد که شاخه ای با همان تغییرات در local ساخته خواهد شد:

$ git checkout <BRANCH>

ریپو گیت تنها محدود به یک میزبان نمی‌باشد و می‌توان remote های بیشتری به آن متصل کرد:

$ git remote add <NAME> <URL>

و فهرست remote ها با همین دستور قابل مشاهده است:

$ git remote

برای مثال به سایت آژور مراجعه کرده و با اکانت مایکروسافت خود وارد شوید (یا یک حساب جدید ایجاد کنید):

https://dev.azure.com/

هنگام وارد شدن از شما نام Organization درخواست می‌شود که برای دسترسی به آژور شما به کار می‌رود.

سپس با صفحه ساخت پروژه مواجه خواهید شد.

ترجیحا نام ریپو خود را با بقیه ریپو ها یکسان بزارید تا سردرگم نشوید. این بار برخلاف گیت‌هاب استفاده از ریپو خصوصی (Private) مانعی ندارد.

از بخش Repos گزینه Files را انتخاب و لینک گیت را کپی کنید. توجه داشته باشید که نام origin را به گیت‌هاب تعلق داده‌اید. نام دیگری برای آن انتخاب کنید.

پس از اضافه کردن remote جدید اطلاعات حساب کاربری مایکروسافت شما درخواست می‌شود

حساب خود را وارد کرده و remote دیگری به ریپو شما اضافه خواهد شد.

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

در این بخش نحوه clone کردن ریپو remote از گیت‌هاب و نحوه push کردن ریپو local موجود (existing) به سرور آژور بررسی شد. اگر تمام بخش های این آموزش را مطالعه کرده‌اید با ذکر خسته نباشید، شما به مباحث مورد نیاز برای شروع کار با گیت مسلط هستید. تبریک ?


برای دیدن مطالب بیشتر از بنده ممنون می‌شوم من را دنبال کنید. موفق و سربلند باشید ?