مقدمه Git Syncing
SVN از یک مخزن متمرکز واحد، به عنوان مرکز ارتباط برای توسعه دهندگان استفاده می کند و مشارکت (Collaboration)، با استفاده از تبادل بین نسخه های فعال توسعه دهندگان و مخزن مرکزی صورت می گیرد. این با مدل همکاری توزیع شده Git متفاوت است، که به هر توسعه دهنده ای، نسخه اختصاصی مخزن، به همراه تاریخچه محلی و ساختار شاخه بندی خودشان را می دهد. کاربران معمولا باید یک سری Commit ها را به جای یک تغییر واحد به اشتراک بگذارند. به جای Commit تغییرها از یک نسخه فعال (working copy) در مخزن مرکزی، Git به شما امکان می دهد کل شاخه ها را بین مخزن ها به اشتراک بگذارید.
دستور git remote یک قطعه از سیستم گسترده تر است که وظیفه همگام سازی (syncing) تغییرها را بر عهده دارد. تاریخچه های ثبت شده از راه دستور git remote همراه با دستورهای git fetch ، git push و git pull استفاده می شوند. این دستورها، وظیفه همگام سازی خاص خود را دارند که می توان آن ها را در بخش های مربوط به خود مطالعه کرد.
Git Remote
دستور git remote امکان ایجاد، مشاهده و حذف ارتباط با مخزن های دیگر را به شما می دهد. اتصال های از راه دور بیشتر شبیه نشانه گذاری (bookmark) ها هستند تا لینک مستقیم به مخزن های دیگر. آن ها به جای دسترسی سریع (real-time)به مخزن دیگر، به عنوان نام های مناسبی هستند که می توانند برای آدرس (URL) های نه چندان خوانا باشند.
برای مثال، نمودار زیر دو اتصال از راه دور از مخزن شما به مخزن مرکزی و مخزن توسعه دهنده دیگری را نشان می دهد. به جای ارجاع به آدرس های کامل آن ها، می توانید میانبرهای (shortcuts) مخزن اصلی و مخزن علی را در سایر دستورهای Git جایگزین کنید.
بررسی اجمالی استفاده از Git Remote
دستور git remote در اصل یک رابط است که برای مدیریت لیستی از ورودی های از راه دور به کار می رود و در فایل git/config./.
ذخیره می شود. از دستورهای زیر برای مشاهده وضعیت فعلی لیست از راه دور استفاده می شود.
مشاهده تنظیمات Git Remote
دستور زیر لیست اتصال های از راه دور را فهرست می کند.
git remote
این دستور مانند دستور بالا است، اما آدرس هر اتصال را نیز در خروجی نمایش می دهد.
git remote -v
ایجاد و اصلاح تنظیمات از راه دور git
دستور git remote همچنین یک روش راحت یا "کمکی" (helper) برای اصلاح فایل git/config./.
در مخزن است. دستورهای ارائه شده در زیر به شما امکان می دهد تا ارتباط ها با مخزن های دیگر را مدیریت کنید. دستورهای زیر فایل ./.git/config در مخزن را اصلاح می کنند. نتیجه دستورهای زیر را می توان با ویرایش مستقیم فایل git/config./.
با ویرایشگر متن نیز به دست آورد.
git remote add <name> <url>
با استفاده از دستور بالا، اتصال جدیدی به یک مخزن از راه دور ایجاد کنید. پس از افزودن یک اتصال از راه دور، می توانید به عنوان میانبر مناسب برای سایر دستورهای Git استفاده کنید.
git remote rm <name>
اتصال به مخزن از راه دور را حذف کنید.
git remote rename <old-name> <new-name>
نام اتصال از راه دور را به نام جدید تغییر دهید.
بررسی Git Remote
Git، به گونه ای طراحی شده است که به هر توسعه دهنده یک محیط توسعه کاملا مجزا ارائه دهد. به این معنی که اطلاعات به طور خودکار، بین مخزن ها به عقب و جلو منتقل نمی شوند. در عوض، توسعه دهندگان باید به صورت مرتب Commit های بالادستی را به مخزن محلی خود Pull کنند و یا Commit های محلی خود را به سمت مخزن مرکزی Push نمایند. دستور git remote فقط یک روش ساده تر برای انتقال URL به این دستورهای "اشتراک گذاری" (sharing) است.
مبدا از راه دور (origin Remote)
هنگامی که یک مخزن را git clone می کنید، به طور خودکار یک اتصال از راه دور ایجاد می شود به نام Origin که به مخزن شبیه سازی شده اشاره دارد. این برای توسعه دهندگان جهت ایجاد یک نسخه محلی از مخزن مرکزی مفید است، زیرا راهی آسان برای جا به جایی تغییرهای بالادستی یا انتشار Commit های محلی فراهم می کند. این رفتار همچنین به این دلیل است که اکثر پروژه های مبتنی بر Git، منبع اصلی خود را Origin (اصل) می نامند.
URL های مخزن
Git، از بسیاری از روش های ارجاع به یک مخزن از راه دور، پشتیبانی می کند. دو مورد از ساده ترین راه های دسترسی به مخزن از راه دور از طریق پروتکل های HTTP
و SSH
هستند. HTTP
، راهی آسان برای دسترسی ناشناس و فقط خواندنی به مخزن است. مثلا:
http://host/path/to/repo.git
اما، معمولا Push کردن Commit ها به آدرس HTTP
امكان پذیر نیست (به هر حال نمی خواهید Push های ناشناس را اعمال كنید). برای دسترسی به خواندن و نوشتن، باید از SSH
استفاده کنید:
ssh://user@host/path/to/repo.git
شما به یک حساب SSH
معتبر در ماشین میزبان نیاز خواهید داشت، اما غیر از این، Git از دسترسی احراز هویت شده از راه SSH
نیز به طور پیش فرض پشتیبانی می کند. راه کار های امن امروزی مانند Bitbucket.com، نیز این روش را پشتیبانی می کنند.
دستورهای Git Remote
دستور git remote، یکی از دستورهای Git است که "دستور های فرعی" اضافی ضمیمه شده را در بر دارد. در زیر، زیرفرمان هایی بررسی شده است که معمولا در git remote استفاده می شود.
ADD <NAME> <URL>
یک رکورد در git/config./.
با نام <NAME>
و آدرس <URL>
مخزن اضافه می کند.
یک گزینه f–
را می پذیرد که بدون فاصله پس از ایجاد رکورد از راه دور، واکشی (fetch) می شود.
یک گزینه tags--
می پذیرد که فوری واکشی می شود و هر tag را از مخزن از راه دور، وارد می کند.
RENAME <OLD> <NEW>
برای تغییر نام اتصال <OLD>
به نام <NEW>
در فایل git/config./.
استفاده می شود. تمام شاخه های ردیابی از راه دور به روز رسانی می شوند.
REMOVE or RM <NAME>
فایل git/config./.
را اصلاح کرده و مخزن از راه دور با نام <NAME>
را حذف می کند. همه شاخه های ردیابی از راه دور و تنظیمات پیکربندی آن حذف می شوند.
GET-URL <NAME>
URL های یک رکورد از راه دور را فهرست می کند.
گزینه push–
را قبول می کند، آدرس های Push را به جای آدرس های Fetch، فهرست می کند.
با all--
، تمام آدرس های از راه دور لیست می شوند.
SHOW <NAME>
اطلاعات سطح بالا در مورد مخزن از راه دور را نمایش می دهد.
PRUNE <NAME>
هر شاخه محلی را که در مخزن از راه دور به نام <NAME>
وجود ندارد، حذف می کند.
یک گزینه dry-run–
دارد که لیست شاخه هایی را که قرار است هرس (prune) شوند، لیست می کند، اما در واقع آن ها را هرس نمی کند.
مثال های Git Remote
علاوه بر منبع، ارتباط با مخزن های هم تیمی اغلب راحت است. برای مثال، اگر همكار شما، مثلا علی، مخزنی را در دسترس عموم در dev.example.com/ali.git
داشته باشد، می توانید اتصال را به شرح زیر اضافه كنید:
git remote add john http://dev.example.com/ali.git
داشتن این نوع دسترسی به مخزن های برنامه نویسان شخصی، امکان همکاری در خارج از مخزن مرکزی را فراهم می کند. این برای تیم های کوچکی که روی یک پروژه بزرگ کار می کنند، بسیار مفید است.
نمایش اتصال های از راه دور شما
به طور پیش فرض، دستور git remote اتصال های از راه دور ذخیره شده به مخزن های دیگر را لیست می کند. یک خروجی تک خطی تولید می کند که نام های "نشانک" (bookmark) مخزن های از راه دور را لیست می کند.
$ git remote
origin
upstream
other_users_repo
فراخوانی git remote با گزینه v-
، لیستی از نام های مخزن علامت گذاری شده و علاوه بر این، آدرس مخزن مربوط به آن را چاپ می کند. گزینه -v مخفف "verbose" است. در زیر مثال خروجی verbose git remote نشان داده شده است.
git remote -v
origin git@bitbucket.com:origin_user/reponame.git (fetch)
origin git@bitbucket.com:origin_user/reponame.git (push)
upstream https://bitbucket.com/upstream_user/reponame.git (fetch)
upstream https://bitbucket.com/upstream_user/reponame.git (push)
other_users_repo https://bitbucket.com/other_users_repo/reponame (fetch)
other_users_repo https://bitbucket.com/other_users_repo/reponame (push)
افزودن مخزن های از راه دور
دستور git remote add یک رکورد اتصال جدید، به یک مخزن از راه دور ایجاد می کند. پس از افزودن، می توانید به عنوان یک میانبر مناسب برای سایر دستورهای Git استفاده کنید. برای اطلاعات بیشتر درباره ساختار URL پذیرفته شده، بخش "URL های مخزن" را در زیر مشاهده کنید. این دستور یک رکورد جدید در مخزن git/config./.
ایجاد می کند. مثالی از این به روزرسانی فایل پیکربندی به شرح زیر است:
$ git remote add fake_test https://bitbucket.com/upstream_user/reponame.git; [remote "remote_test"]
url = https://bitbucket.com/upstream_user/reponame.git
fetch = +refs/heads/*:refs/remotes/remote_test/*
بازرسی یک کنترل از راه دور
دستور فرعی show
را می توان به git remote ضمیمه کرد تا خروجی مفصلی از پیکربندی مخزن از راه دور داشته باشد. این خروجی شامل لیستی از شاخه های مرتبط با مخزن از راه دور و همچنین نقطه های انتهایی متصل شده برای fetching و pushing است.
git remote show upstream
* remote upstream
Fetch URL: https://bitbucket.com/upstream_user/reponame.git
Push URL: https://bitbucket.com/upstream_user/reponame.git
HEAD branch: master
Remote branches:
master tracked
simd-deprecated tracked
tutorial tracked
Local ref configured for 'git push':
master pushes to master (fast-forwardable)
Fetching و Pulling برای Git Remote
هنگامی که یک رکورد از راه دور با استفاده از دستور git remote پیکربندی شد، می توان نام مخزن از راه دور را به عنوان آرگومان به سایر دستورهای Git منتقل کرد تا با مخزن از راه دور ارتباط برقرار کند. برای خواندن از یک مخزن از راه دور می توان از git fetch و git pull استفاده کرد. هر دو دستور عملکردهای متفاوتی دارند که در بخش های مربوط به خودشان، با عمق بیشتری توضیح داده می شوند.
Pushing برای Git Remote
از دستور git push برای نوشتن در یک مخزن از راه دور استفاده می شود.
git push <remote-name> <branch-name>
این مثال، وضعیت محلی را در مخزن از راه دور مشخص شده با نام آن، بارگذاری می کند.
تغییر نام و حذف از راه دور
git remote rename <old-name> <new-name>
دستور git remote rename
کاملا واضح است. با اجرای این دستور، نام یک اتصال از راه دور را به نام جدید تغییر می دهد. علاوه بر این، محتویات git/config./.
را تغییر داده تا رکورد برای کنترل از راه دور را نیز، در آن جا تغییر نام دهد.
git remote rm <name>
دستور git remote rm
، اتصال به مخزن از راه دور مشخص شده با پارامتر name را از بین می برد. برای نشان دادن این موضوع، اجازه دهید آخرین اتصال از راه دور اضافه شده را حذف کنیم. اگر git remote rm
remote_test
را اجرا کنیم و سپس محتویات git/config./.
را بررسی کنیم، می توانیم ببینیم که رکورد "remote_test
" در فایل git/config./.
دیگر وجود ندارد.