دنیای کدهای شما از مرزهای سیستم شخصی فراتر میرود. تا این لحظه، تمام تغییرات و تاریخچه پروژه تنها در حافظه کامپیوتر شما ذخیره شده بود، اما برای تبدیل شدن به یک برنامهنویس حرفهای و حضور در پروژههای تیمی، باید کدهای خود را به «ابر» (Cloud) منتقل کنید.
گیتهاب به عنوان قدرتمندترین میزبان کدهای جهان، فضایی است که در آن کدهای شما زنده میشوند، توسط دیگران دیده میشوند و اجازه میدهند تا چندین نفر همزمان روی یک پروژه بزرگ کار کنند.
در این درس، یاد میگیرید که چگونه با استفاده از دستورات هوشمندی مانند git remote بین سیستم خود و سرورهای گیتهاب یک اتصال امن و دائمی برقرار کنید.
همچنین با ابزارهای ارسال و دریافت تغییرات آشنا میشوید تا همیشه آخرین نسخه پروژه را در اختیار داشته باشید. تسلط بر این بخش، اولین قدم واقعی شما برای پیوستن به تیمهای نرمافزاری و انتشار جهانی پروژههایتان خواهد بود.
ساخت مخزن (Repository) در گیتهاب
اولین قدم برای جهانی کردن پروژهتان، ایجاد یک فضای اختصاصی در ابرهای گیتهاب است. گیتهاب به عنوان یک پلتفرم میزبان، فضایی را در اختیار شما قرار میدهد تا کدهایی که روی سیستم شخصی خود (Local) نوشتهاید را در آنجا آپلود کرده و با دیگران به اشتراک بگذارید.
مراحل ایجاد مخزن جدید
برای شروع، پس از ورود به حساب کاربری خود در گیتهاب، روی علامت + در نوار بالا کلیک کرده و گزینه New repository را انتخاب کنید.
در این بخش رعایت نکات زیر برای هماهنگی بهتر با پروژه محلی شما ضروری است:
نام مخزن (Repository Name): نامی انتخاب کنید که معرف پروژه شما باشد. بهتر است این نام با نام پوشه پروژه در کامپیوترتان یکی باشد تا دچار سردرگمی نشوید.
نوع دسترسی (Public/Private): اگر میخواهید همه کدهای شما را ببینند گزینه Public و اگر پروژه شخصی است، گزینه Private را انتخاب کنید.
تنظیمات اولیه (Initialize this repository): چون ما از قبل در سیستم خودمان مخزن را ساختهایم، در این مرحله تیک گزینههای اضافه کردن README یا .gitignore را نزنید. این کار باعث میشود یک مخزن کاملاً خالی ایجاد شود که آماده پذیرش کدهای شما از سیستم محلی است.
دریافت آدرس ریپازیتوری
پس از کلیک روی دکمه Create repository، گیتهاب شما را به صفحهای هدایت میکند که حاوی یک آدرس منحصربهفرد (شبیه به https://github.com/username/test_project.git) است. این آدرس دقیقاً همان پلی است که کامپیوتر شما را به سرورهای گیتهاب متصل میکند و در بخش بعدی از آن برای معرفی سرور به گیت استفاده خواهیم کرد.
دقت کنید که این صفحه را نبندید، چون برای دستورات بعدی به این آدرس نیاز داریم.
معرفی سرور به گیت با دستور git remote
دستور git remote نقش دفترچه تلفن مخزن شما را ایفا میکند. وقتی آدرس مخزن را از گیتهاب کپی میکنید، باید راهی باشد که سیستم محلی شما بفهمد این کدهای فیزیکی قرار است با کدام سرور در دنیا در ارتباط باشند. در واقع شما با این دستور، یک نام مستعار یا میانبر برای آن آدرس طولانی اینترنتی تعریف میکنید تا هر بار مجبور به تایپ مجدد آن نشوید.
تعریف نام مستعار برای مخزن ابری
برنامهنویسان به طور قراردادی از کلمه origin به عنوان نام اصلی سرور خود استفاده میکنند. این نام تنها یک قرارداد است و اجباری در آن نیست، اما رعایت آن باعث میشود سایر اعضای تیم نیز به راحتی ساختار پروژه شما را درک کنند. برای برقراری این اتصال، از ساختار زیر استفاده کنید:
git remote add origin <URL-Github>
با اجرای این دستور، گیت متوجه میشود که از این پس هر زمان حرفی از "origin" به میان آمد، منظور همان آدرس مشخصی است که در گیتهاب ساختهاید. این پیوند تنها یک بار انجام میشود و تا زمانی که آدرس مخزن را تغییر ندهید، ثابت باقی میماند.
اطمینان از صحت اتصال
بررسی نهایی آدرسها از بروز خطاهای احتمالی در هنگام ارسال کد جلوگیری میکند. همیشه پس از معرفی سرور، بهتر است با یک دستور کوتاه مطمئن شوید که گیت آدرسها را به درستی ذخیره کرده است. برای این کار، دستور زیر را در ترمینال بنویسید:
git remote -v
در خروجی این دستور، باید دو خط را مشاهده کنید که یکی برای ارسال (Push) و دیگری برای دریافت (Fetch) تغییرات تنظیم شده است. اگر آدرسها دقیقاً همان چیزی هستند که از گیتهاب کپی کرده بودید، یعنی پل ارتباطی شما با موفقیت ساخته شده است.
ارسال کدها با دستور git push
ارسال کدها آخرین مرحله برای ثبت زحمات شما در فضای ابری و اشتراکگذاری آنها با دنیا است. با استفاده از دستور git push تمام کامیتهایی که در مخزن محلی خود ثبت کردهاید، به سرورهای گیتهاب منتقل میشوند تا سایر اعضای تیم نیز به آنها دسترسی داشته باشند.
برقراری اولین ارتباط با سوییچ -u
وقتی برای اولین بار میخواهید محتوای یک شاخه جدید را به گیتهاب بفرستید، گیت نیاز دارد بداند این شاخه محلی قرار است به کدام شاخه در سرور متصل شود. برای ایجاد این رابطه هوشمند و دائمی، از سوییچ -u استفاده کنید:
git push -u origin <branch-name>
این دستور شاخه شما را در گیتهاب میسازد و بین آنها پیوند برقرار میکند. مزیت بزرگ این کار این است که برای دفعات بعدی، دیگر نیازی به نوشتن نام شاخه ندارید و تنها با تایپ دستور git push گیت میداند که باید تغییرات را به کجا منتقل کند.
مدیریت توقف در ارسال
گاهی ممکن است گیت اجازه ارسال کدها را به شما ندهد و با پیام خطا مواجه شوید. این وضعیت معمولاً زمانی رخ میدهد که همتیمیهای شما کدهای جدیدی را به سرور فرستاده باشند که هنوز روی سیستم شما وجود ندارد.
در این شرایط، گیت برای جلوگیری از بازنویسی اشتباه کدهای دیگران، عملیات را متوقف میکند؛ برای حل این مشکل، ابتدا باید با دستور git pull تغییرات جدید را دریافت و با کدهای خود ترکیب کنید و سپس دوباره اقدام به ارسال نمایید
بهروزرسانی پروژه با git fetch و git pull
در یک پروژه تیمی، شما تنها کسی نیستید که کد میزنید. همتیمیهای شما همزمان در حال ارسال (Push) کدهای خود به گیتهاب هستند. برای اینکه پروژه شما با آخرین تغییرات دنیا هماهنگ بماند و دچار تداخل نشوید، باید مرتباً مخزن محلی خود را بهروزرسانی کنید. گیت برای این کار دو ابزار با کاربردهای متفاوت در اختیارتان قرار میدهد.
دستور git fetch؛ نگاهی به آخرین خبرها
استفاده از git fetch مانند این است که روزنامه صبح را بخوانید تا بفهمید در دنیا چه گذشته است، بدون اینکه دکوراسیون خانهتان را تغییر دهید. این دستور تمام اطلاعات و کامیتهای جدید را از سرور دانلود میکند اما آنها را با کدهای فعلی شما ترکیب نمیکند.
این روش زمانی بسیار مفید است که میخواهید ابتدا تغییرات دیگران را بررسی کنید و ببینید چه بخشهایی از پروژه تغییر کرده است. پس از اجرای این دستور، فایلهای در حال ویرایش شما کاملاً دستنخورده باقی میماند و فقط «دانش» گیت از وضعیت سرور بهروز میشود.
دستور git pull؛ دریافت و ترکیب خودکار
اگر میخواهید بدون فوت وقت آخرین نسخه پروژه را روی سیستم خود داشته باشید، از git pull استفاده کنید. این دستور در واقع یک میانبر برای انجام دو کار پشت سر هم است: ابتدا تغییرات را دانلود میکند (Fetch) و بلافاصله آنها را با کدهای فعلی شما ادغام میکند (Merge).
دقت کنید که git pull محیط کاری شما را مستقیماً تغییر میدهد. اگر فایلی توسط همتیمی شما ویرایش شده باشد، نسخه جدید جایگزین نسخه قدیمی در پوشه پروژه شما خواهد شد. به همین دلیل همیشه توصیه میشود قبل از اجرای این دستور، کارهای نیمهتمام خود را کامیت کنید تا محیط کاری تمیزی داشته باشید و از بروز تعارضهای ناخواسته جلوگیری کنید
هماهنگی با تیم
برای اینکه همیشه با پروژه هماهنگ باشید، این سناریو را در ترمینال تمرین کنید:
- دریافت لیست تغییرات بدون تغییر در فایلها: $ git fetch origin
- بهروزرسانی قطعی شاخه اصلی (مثلاً main): $ git pull origin main
- تایید نهایی: با اجرای دستور $ git log --oneline مشاهده میکنید که کامیتهای جدید همتیمیهایتان به تاریخچه محلی شما اضافه شده و نشانگر پروژه بهروز شده است.
مدیریت پیوندها با git remote -v
این دستور ویترین تمام اتصالات مخزن شماست. وقتی پروژهای را به گیتهاب متصل میکنید یا در حال همکاری با یک تیم بزرگ هستید، باید دقیقاً بدانید کدهای شما به کدام آدرس ارسال و از کدام منبع دریافت میشوند. استفاده از سوییچ -v که مخفف "verbose" است، به گیت دستور میدهد تا جزئیات کامل و دقیق این پیوندها را برای شما فاش کند.
مشاهده جزئیات فرستنده و گیرنده
با اجرای دستور زیر در ترمینال، گیت لیست تمام سرورهای متصل را نمایش میدهد:
git remote -v
در خروجی این دستور، شما معمولاً دو سطر برای هر نام مستعار (مانند origin) مشاهده میکنید. در انتهای هر سطر، یکی از دو عبارت زیر درج شده است:
- (fetch): آدرسی که گیت از آن برای دریافت آخرین تغییرات و بهروزرسانیهای تیم استفاده میکند.
- (push): مسیری که کدهای محلی شما پس از تایید نهایی به آنجا ارسال میشوند تا در فضای ابری گیتهاب ذخیره گردند.
چرا بررسی این لیست اهمیت دارد؟
مدیریت هوشمند پیوندها مانع از ارسال اشتباه کدها به مخازن غیرمرتبط میشود. در پروژههای حرفهای و تیمی، گاهی نیاز است به چندین سرور مختلف (مثلاً سرور اصلی شرکت و مخزن شخصی خودتان) متصل باشید. دستور git remote -v به شما کمک میکند تا در هر لحظه از صحت آدرسها مطمئن شوید و اگر تغییری در آدرس مخزن گیتهاب رخ داده باشد، سریعاً آن را ردیابی و اصلاح کنید.