GIT-REMOTE(1) دستورات عمومی کاربر GIT-REMOTE(1)

git-remote - مدیریت مجموعه مخازن ردیابی‌شده دوردست

git remote [-v | --verbose]
git remote add [-t <branch>] [-m <master>] [-f] [--[no-]tags] [--mirror=(fetch|push)] <name> <URL>
git remote rename [--[no-]progress] <old> <new>
git remote remove <name>
git remote set-head <name> (-a | --auto | -d | --delete | <branch>)
git remote set-branches [--add] <name> <branch>...
git remote get-url [--push] [--all] <name>
git remote set-url [--push] <name> <newurl> [<oldurl>]
git remote set-url --add [--push] <name> <newurl>
git remote set-url --delete [--push] <name> <URL>
git remote [-v | --verbose] show [-n] <name>...
git remote prune [-n | --dry-run] <name>...
git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]

مدیریت مجموعه‌ای از مخازن («remotes» یا مخازن دوردست) که شاخه‌های آن‌ها را ردیابی می‌کنید.

-v, --verbose

اطلاعات با جزئیات بیشتری نمایش داده شده و نشانی اینترنتی (URL) مخزن دوردست پس از نام آن نشان داده می‌شود. برای مخازن متعهدکننده (promisor remotes)، همچنین نشان می‌دهد چه فیلترهایی (blob:none و غیره) پیکربندی شده‌اند. نکته: این گزینه باید بین remote و زیردستور قرار گیرد.

بدون هیچ آرگومانی، فهرستی از مخازن دوردست موجود را نمایش می‌دهد. چندین زیردستور برای انجام عملیات روی مخازن دوردست در دسترس است.

add

یک مخزن دوردست با نام <name> برای مخزن موجود در <URL> اضافه می‌کند. سپس می‌توان از دستور git fetch <name> برای ایجاد و به‌روزرسانی شاخه‌های ردیابی دوردست <name>/<branch> استفاده کرد.

با گزینه -f، دستور git fetch <name> بلافاصله پس از تنظیم اطلاعات مخزن دوردست اجرا می‌شود.

با گزینه --tags، دستور git fetch <name> تمام برچسب‌ها را از مخزن دوردست وارد می‌کند.

با گزینه --no-tags، دستور git fetch <name> برچسب‌ها را از مخزن دوردست وارد نمی‌کند.

به‌طور پیش‌فرض، فقط برچسب‌های موجود در شاخه‌های دریافت‌شده وارد می‌شوند (نگاه کنید به git-fetch(1)).

با گزینه -t <branch>، به جای الگوی پیش‌فرض glob refspec برای مخزن دوردست جهت ردیابی تمام شاخه‌های زیر فضای نام refs/remotes/<name>/، یک refspec برای ردیابی فقط <branch> ایجاد می‌شود. می‌توانید بیش از یک -t <branch> را برای ردیابی چندین شاخه بدون دریافت همه شاخه‌ها مشخص کنید.

با گزینه -m <master>، یک ارجاع نمادین (symbolic-ref) refs/remotes/<name>/HEAD تنظیم می‌شود تا به شاخه <master> مخزن دوردست اشاره کند. همچنین دستور set-head را ببینید.

هنگامی که با --mirror=fetch یک آینه دریافت (fetch mirror) ایجاد می‌شود، ارجاع‌ها در فضای نام refs/remotes/ ذخیره نخواهند شد، بلکه همه چیز در refs/ مخزن دوردست مستقیماً در refs/ مخزن محلی آینه‌سازی می‌شود. این گزینه فقط در مخازن bare کاربرد دارد، زیرا یک fetch هرگونه کامیت محلی را بازنویسی می‌کند.

هنگامی که با --mirror=push یک آینه ارسال (push mirror) ایجاد می‌شود، آنگاه git push همیشه به‌گونه‌ای رفتار خواهد کرد که گویی --mirror ارسال شده است.

rename

مخزن دوردست با نام <old> را به <new> تغییر نام می‌دهد. تمامی شاخه‌های ردیابی دوردست و تنظیمات پیکربندی مربوط به مخزن دوردست به‌روزرسانی می‌شوند.

در صورتی که <old> و <new> یکسان باشند، و <old> فایلی در زیر $GIT_DIR/remotes یا $GIT_DIR/branches باشد، مخزن دوردست به قالب فایل پیکربندی تبدیل می‌شود.

remove, rm

مخزن دوردست با نام <name> را حذف می‌کند. تمامی شاخه‌های ردیابی دوردست و تنظیمات پیکربندی مربوط به مخزن دوردست حذف می‌شوند.

set-head

شاخه پیش‌فرض (یعنی هدف ارجاع نمادین refs/remotes/<name>/HEAD) را برای مخزن دوردست مشخص‌شده تنظیم یا حذف می‌کند. داشتن شاخه پیش‌فرض برای یک مخزن دوردست الزامی نیست، اما اجازه می‌دهد نام مخزن دوردست به جای یک شاخه خاص قید شود. برای مثال، اگر شاخه پیش‌فرض برای origin روی master تنظیم شده باشد، آنگاه می‌توان origin را در هر جایی که معمولاً origin/master را مشخص می‌کردید، تعیین کرد.

با -d یا --delete، ارجاع نمادین refs/remotes/<name>/HEAD حذف می‌شود.

با -a یا --auto، از مخزن دوردست برای تعیین HEAD آن استعلام می‌شود، سپس ارجاع نمادین refs/remotes/<name>/HEAD روی همان شاخه تنظیم می‌گردد؛ مثلاً اگر HEAD مخزن دوردست به next اشاره داشته باشد، دستور git remote set-head origin -a ارجاع نمادین refs/remotes/origin/HEAD را روی refs/remotes/origin/next تنظیم خواهد کرد. این تنها در صورتی کار خواهد کرد که refs/remotes/origin/next از قبل وجود داشته باشد؛ در غیر این صورت ابتدا باید دریافت (fetch) شود.

از <branch> برای تنظیم صریح ارجاع نمادین refs/remotes/<name>/HEAD استفاده کنید؛ مثلاً git remote set-head origin master ارجاع نمادین refs/remotes/origin/HEAD را روی refs/remotes/origin/master تنظیم خواهد کرد. این تنها در صورتی کار خواهد کرد که refs/remotes/origin/master از قبل وجود داشته باشد؛ در غیر این صورت ابتدا باید دریافت (fetch) شود.

set-branches

فهرست شاخه‌های ردیابی‌شده توسط مخزن دوردست مشخص‌شده را تغییر می‌دهد. این دستور می‌تواند برای ردیابی زیرمجموعه‌ای از شاخه‌های دوردست موجود پس از راه‌اندازی اولیه یک مخزن دوردست استفاده شود.

شاخه‌های مشخص‌شده به‌گونه‌ای تفسیر می‌شوند که گویی با گزینه -t در خط فرمان git remote add مشخص شده‌اند.

با --add، به جای جایگزین کردن فهرست شاخه‌هایی که در حال حاضر ردیابی می‌شوند، به آن فهرست اضافه می‌کند.

get-url

نشانی‌های اینترنتی (URLها) یک مخزن دوردست را بازیابی می‌کند. پیکربندی‌های insteadOf و pushInsteadOf در اینجا بسط داده می‌شوند. به‌طور پیش‌فرض، فقط نخستین URL فهرست می‌شود.

با --push، به جای URLهای دریافت (fetch)، نشانی‌های ارسال (push) پرس‌وجو می‌شوند.

با --all، تمامی URLهای مربوط به مخزن دوردست فهرست خواهند شد.

set-url

نشانی‌های اینترنتی (URLها) مربوط به مخزن دوردست را تغییر می‌دهد. اولین URL مخزن دوردست <name> را که با عبارت باقاعده (regex) <oldurl> مطابقت دارد (یا اولین URL در صورت عدم تعیین <oldurl>) به <newurl> تنظیم می‌کند. اگر <oldurl> با هیچ URLای مطابقت نداشته باشد، خطا رخ داده و چیزی تغییر نمی‌کند.

با --push، به جای URLهای دریافت، نشانی‌های ارسال دستکاری می‌شوند.

با --add، به جای تغییر URLهای موجود، نشانی اینترنتی جدید اضافه می‌شود.

با --delete، به جای تغییر URLهای موجود، تمامی URLهای مطابق با عبارت باقاعده <URL> برای مخزن دوردست <name> حذف می‌شوند. تلاش برای حذف تمام URLهای غیر از push یک خطا است.

توجه داشته باشید که نشانی ارسال (push URL) و نشانی دریافت (fetch URL)، با وجود اینکه می‌توانند متفاوت تنظیم شوند، اما همچنان باید به یک مکان اشاره کنند. آنچه به push URL ارسال می‌کنید باید همان چیزی باشد که در صورت دریافت فوری از fetch URL مشاهده می‌کنید. اگر تلاش می‌کنید از یک مکان دریافت کرده (مانند مخزن بالادستی شما) و به مکان دیگری ارسال کنید (مانند مخزن انتشار خود)، از دو مخزن دوردست مجزا استفاده کنید.

show

اطلاعاتی درباره مخزن دوردست <name> ارائه می‌دهد.

با گزینه -n، ابتدا وضعیت headهای دوردست با دستور git ls-remote <name> استعلام نمی‌شود؛ بلکه به جای آن از اطلاعات ذخیره‌شده در حافظه نهان استفاده می‌گردد.

prune

ارجاع‌های کهنه مرتبط با <name> را حذف می‌کند. به‌طور پیش‌فرض، شاخه‌های ردیابی دوردست کهنه زیر <name> حذف می‌شوند، اما بسته به پیکربندی سراسری و پیکربندی مخزن دوردست، حتی ممکن است برچسب‌های محلی که به آنجا ارسال نشده‌اند نیز هرس شوند. این کار معادل دستور git fetch --prune <name> است، به جز اینکه هیچ ارجاع جدیدی دریافت نخواهد شد.

بخش PRUNING در git-fetch(1) را برای آنچه که بسته به پیکربندی‌های مختلف هرس خواهد شد ببینید.

با گزینه --dry-run، گزارش می‌دهد چه شاخه‌هایی هرس خواهند شد، اما در عمل آن‌ها را هرس نمی‌کند.

update

به‌روزرسانی‌ها را برای مخازن دوردست یا گروه‌های مخزن دوردست در مخزن همان‌طور که توسط remotes.<group> تعریف شده است دریافت می‌کند. اگر نه گروه و نه مخزن دوردست در خط فرمان مشخص نشده باشند، پارامتر پیکربندی remotes.default استفاده خواهد شد؛ اگر remotes.default تعریف نشده باشد، تمامی مخازن دوردستی که پارامتر پیکربندی remote.<name>.skipDefaultUpdate آن‌ها روی true تنظیم نشده باشد، به‌روزرسانی خواهند شد. (نگاه کنید به git-config(1)).

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

پیکربندی مخزن دوردست با استفاده از متغیرهای پیکربندی remote.origin.url و remote.origin.fetch انجام می‌شود. (نگاه کنید به git-config(1)).

در صورت موفقیت، وضعیت خروج 0 است.

هنگامی که زیردستورهایی مانند add، rename و remove نتوانند مخزن دوردست مورد نظر را بیابند، وضعیت خروج 2 خواهد بود. هنگامی که مخزن دوردست از قبل وجود داشته باشد، وضعیت خروج 3 است.

در صورت وقوع هر خطای دیگری، وضعیت خروج ممکن است هر مقدار غیر صفر دیگری باشد.

•افزودن یک مخزن دوردست جدید، دریافت (fetch)، و چک‌اوت یک شاخه از آن
$ git remote
origin
$ git branch -r
  origin/HEAD -> origin/master
  origin/master
$ git remote add staging git://git.kernel.org/.../gregkh/staging.git
$ git remote
origin
staging
$ git fetch staging
...
From git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
 * [new branch]      master     -> staging/master
 * [new branch]      staging-linus -> staging/staging-linus
 * [new branch]      staging-next -> staging/staging-next
$ git branch -r
  origin/HEAD -> origin/master
  origin/master
  staging/master
  staging/staging-linus
  staging/staging-next
$ git switch -c staging staging/master
...
•تقلید رفتار git clone اما فقط با ردیابی شاخه‌های انتخاب‌شده
$ mkdir project.git
$ cd project.git
$ git init
$ git remote add -f -t master -m master origin git://example.com/git.git/
$ git merge origin

git-fetch(1) git-branch(1) git-config(1)

بخشی از مجموعه git(1)

2026-06-29 Git 2.55.0