گیتمقدماتی۸ دقیقه مطالعهGit 2.4x

همکاری با مخزن راه دور

اتصال گیت به مخزن راه دور با clone و remote و همگام‌سازی تغییرات با push، fetch و pull.

آنچه در این درس می‌آموزید

  • مخزن محلی را به مخزن راه دور متصل کنید
  • تغییرات را با push ارسال و با fetch و pull دریافت کنید
  • گردش کار روزمرهٔ همکاری تیمی روی گیت‌هاب را بشناسید
نویسنده: تیم داکنامه · بازبینی: ۲۰۲۶-۱۰-۳۰
فهرست مطالب

مخزن .git شما تا اینجا فقط روی سیستم خودتان بود. برای همکاری، پشتیبان‌گیری یا انتشار کد، به یک «مخزن راه دور» (Remote Repository) نیاز دارید؛ یک نسخهٔ مشترک از پروژه روی سروری مثل گیت‌هاب، گیت‌لب یا حتی سرور خودتان. گیت خودش برای اینترنت و پروتکل خاصی جادو ندارد؛ فقط بین مخزن محلی و مخزن راه دور کامیت جابه‌جا می‌کند.

در این درس پروژه را از دو جهت کار می‌کنیم: پروژه‌ای که از قبل روی سرور هست و آن را می‌گیرید (clone)، و پروژه‌ای که محلی ساخته‌اید و می‌خواهید بالا بفرستید (push).

گرفتن پروژه: git clone

bash
git clone https://github.com/sara-dev/todo-app.git

نمونهٔ خروجی:

text
Cloning into 'todo-app'...
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
Unpacking objects: 100% (12/12), done.

clone همه چیز را می‌آورد: آخرین نسخهٔ فایل‌ها، کل تاریخچهٔ کامیت‌ها و همهٔ شاخه‌ها. در ضمن یک اتصال خودکار با نام origin به مخزن مبدأ می‌سازد. origin فقط یک نام قراردادی و پیش‌فرض است، نه چیزی جادویی. اتصال‌های تعریف‌شده را با git remote -v ببینید:

bash
git remote -v

نمونهٔ خروجی:

text
origin  https://github.com/sara-dev/todo-app.git (fetch)
origin  https://github.com/sara-dev/todo-app.git (push)

دو سطر بودن خروجی طبیعی است: یکی آدرس «گرفتن» و دیگری آدرس «فرستادن» است که معمولاً یکی‌اند.

فرستادن تغییرات: git push

اگر پروژه را محلی شروع کرده‌اید و بعداً مخزن خالی‌ای در گیت‌هاب ساختید، اول اتصال را دستی اضافه کنید:

bash
git remote add origin https://github.com/sara-dev/todo-app.git
git push -u origin main

نمونهٔ خروجی:

text
Enumerating objects: 5, done.
Writing objects: 100% (3/3), 300 bytes, done.
To https://github.com/sara-dev/todo-app.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.

گزینهٔ -u (کوتاه --set-upstream) به گیت می‌گوید شاخهٔ محلی main از این به بعد شاخهٔ origin/main را دنبال کند؛ پس دفعات بعد کافی است git push بنویسید. شاخه‌های دیگر را هم به همین شکل با git push -u origin branch-name می‌فرستید.

گرفتن تغییرات: fetch در برابر pull

دو فرمان برای دریافت تغییرات دارید:

  • git fetch فقط کامیت‌های تازهٔ مخزن راه دور را می‌گیرد و origin/main را به‌روز می‌کند؛ اما به فایل‌ها و شاخهٔ محلی شما کاری ندارد. بعد از آن می‌توانید با git log main..origin/main ببینید چه چیز تازه‌ای رسیده و با git merge origin/main آن را ادغام کنید.
  • git pull همان کار را در دو مرحله پشت‌سرهم انجام می‌دهد: اول fetch، بعد merge به شاخهٔ فعلی. یعنی git pull معادل git fetch و سپس git merge origin/main است.

وقتی هیچ تغییر تازه‌ای نباشد:

bash
git pull

نمونهٔ خروجی:

text
Already up to date.

گردش کار روزمرهٔ یک تیم

چرخهٔ واقعی همکاری معمولاً چنین است:

  1. صبح کار را با git pull شروع کنید تا آخرین وضعیت را داشته باشید.
  2. برای هر کار جدید یک شاخه بسازید: git switch -c fix-typo (همان درس قبل).
  3. کار را کامیت کنید و شاخه را بفرستید: git push -u origin fix-typo.
  4. در گیت‌هاب برای آن شاخه «درخواست ادغام» (Pull Request) باز کنید؛ هم‌تیمی‌ها کد را می‌بینند، نظر می‌دهند و بعد ادغام می‌کنند.
  5. پس از ادغام، شاخهٔ محلی و راه دور را پاک کنید و دوباره pull بزنید.

مرحلهٔ چهارم در خود گیت نیست؛ ابزارهایی مثل گیت‌هاب روی گیت سوار می‌شوند و بازبینی کد (Code Review) و گفت‌وگو را اضافه می‌کنند. مفهوم زیربنایی همان شاخه و ادغام درس قبل است.

تمرین‌ها

تمرین

تمرین ۱ — پروژه را به گیت‌هاب ببرید

در حساب گیت‌هاب خود یک مخزن خالی به نام my-project بسازید (بدون فایل README)، سپس مخزن محلی تمرین درس‌های قبل را به آن متصل کنید و شاخهٔ main را با گزینهٔ -u بفرستید. در پایان با فرمانی فهرست اتصال‌های راه دور را نشان دهید.

bash
# Write your commands here
نمایش راه‌حل
bash
git remote add origin https://github.com/your-username/my-project.git
git push -u origin main
git remote -v

اگر پیام branch 'main' set up to track 'origin/main'. را دیدید، اتصال درست است. از این بعد هر کامیت تازه را فقط با git push می‌فرستید.

:::

تمرین

تمرین ۲ — شبیه‌سازی هم‌تیمی

در یک پوشهٔ دیگر از همان پروژه، یک git clone بگیرید، در نسخهٔ کپی یک فایل تازه بسازید، کامیت و push کنید؛ سپس به مخزن اصلی برگردید و بدون clone دوباره، آن تغییر را با git pull بگیرید. این دقیقاً همان اتفاقی است که برای هم‌تیمی‌های شما می‌افتد.

bash
# Write your commands here
نمایش راه‌حل
bash
git clone https://github.com/your-username/my-project.git my-project-copy
cd my-project-copy
echo "from teammate" > teammate.txt
git add teammate.txt
git commit -m "Add teammate file"
git push
cd ../my-project
git pull

خروجی git pull در مخزن اصلی، آوردن کامیت هم‌تیمی را نشان می‌دهد و فایل teammate.txt حالا آن‌جا هم هست.

:::

خلاصه

  • مخزن راه دور نسخهٔ مشترک پروژه است و اتصال پیش‌فرض آن نام origin دارد.
  • git clone پروژه را با کل تاریخچه می‌گیرد؛ git remote add اتصال به مخزن موجود را می‌سازد.
  • git push تغییرات را می‌فرستد؛ git fetch تغییرات را فقط می‌گیرد و git pull آن‌ها را ادغام هم می‌کند.
  • در کار تیمی: اول pull، بعد شاخهٔ جدا، بعد push و درخواست ادغام؛ اگر push رد شد، اول pull کنید.

با این درس، دورهٔ گیت کامل می‌شود: تاریخچه می‌سازید، شاخه می‌زنید و با تیم همگام می‌مانید. برای ادامه، مستندات رسمی هر فرمان در git-scm.com مرجع دقیق شماست.

منابع و ارجاع‌ها