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

git-clone - کلون کردن یک مخزن درون یک دایرکتوری جدید

git clone [--template=<template-directory>]
          [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
          [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
          [--dissociate] [--separate-git-dir <git-dir>]
          [--depth <depth>] [--[no-]single-branch] [--[no-]tags]
          [--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
          [--[no-]remote-submodules] [--jobs <n>] [--sparse] [--[no-]reject-shallow]
          [--filter=<filter-spec> [--also-filter-submodules]] [--] <repository>
          [<directory>]

یک مخزن را درون یک دایرکتوری تازه‌ساخته‌شده کلون می‌کند، برای هر شاخه در مخزن کلون‌شده شاخه‌های ردگیری دوردست (قابل مشاهده با git branch --remotes) می‌سازد، و یک شاخه اولیه منشعب‌شده از شاخه فعال فعلی مخزن کلون‌شده را ایجاد و دریافت (checkout) می‌کند.

پس از انجام کلون، یک دستور ساده git fetch بدون آرگومان تمام شاخه‌های ردگیری دوردست را به‌روزرسانی می‌کند، و یک دستور git pull بدون آرگومان علاوه بر آن، در صورت وجود شاخه اصلی (master/main) دوردست، آن را با شاخه اصلی محلی فعلی ادغام می‌کند (هنگامی که گزینه --single-branch داده شود این امر صادق نیست؛ در ادامه را ببینید).

این پیکربندی پیش‌فرض با ایجاد مراجعی به سرشاخه‌های دوردست در زیرمسیر refs/remotes/origin و با مقداردهی اولیه متغیرهای پیکربندی remote.origin.url و remote.origin.fetch حاصل می‌شود.

-l, --local

هنگامی که مخزن مورد نظر برای کلون روی ماشین محلی قرار دارد، این فلگ سازوکار معمول انتقال «آگاه از گیت» را دور می‌زند و مخزن را با ایجاد کپی از HEAD و هر آنچه در زیر دایرکتوری‌های objects و refs قرار دارد کلون می‌کند. فایل‌های زیر دایرکتوری .git/objects/ در صورت امکان برای صرفه‌جویی در فضا پیوند سخت (hardlink) می‌شوند.

اگر مخزن به‌صورت یک مسیر محلی مشخص شود (مانند /path/to/repo)، این حالت پیش‌فرض است و گزینه --local اساساً اثری ندارد (no-op). اگر مخزن به‌صورت یک نشانی (URL) مشخص شده باشد، این فلگ نادیده گرفته می‌شود (و ما هرگز از بهینه‌سازی‌های محلی استفاده نمی‌کنیم). مشخص کردن --no-local هنگام ارائه مسیر /path/to/repo حالت پیش‌فرض را لغو می‌کند و در عوض از سازوکار انتقال معمول گیت استفاده می‌نماید.

اگر $GIT_DIR/objects مخزن حاوی پیوندهای نمادین باشد یا خود یک پیوند نمادین باشد، کلون با شکست مواجه خواهد شد. این یک اقدام امنیتی برای جلوگیری از کپی ناخواسته فایل‌ها با دنبال کردن پیوندهای نمادین است.

این گزینه به دلایل امنیتی روی مخازنی که متعلق به سایر کاربران هستند کار نمی‌کند، و برای اینکه عملیات کلون با موفقیت انجام شود، باید گزینه --no-local مشخص گردد.

نکته: این عملیات ممکن است با اصلاحات هم‌زمان در مخزن مبدأ دچار شرایط رقابتی (race) شود، درست مانند اجرای دستور cp -r <src> <dst> در حالی که <src> در حال تغییر است.

--no-hardlinks

فرآیند کلون از یک مخزن روی سامانه فایل محلی را وادار می‌کند تا فایل‌های زیر دایرکتوری .git/objects را به جای استفاده از پیوندهای سخت کپی کند. این کار در صورتی که در تلاش برای تهیه نسخه پشتیبان از مخزن خود باشید می‌تواند مفید باشد.

-s, --shared

هنگامی که مخزن مورد نظر برای کلون روی ماشین محلی قرار دارد، به جای استفاده از پیوندهای سخت، به‌طور خودکار فایل .git/objects/info/alternates را برای به اشتراک‌گذاری اشیاء با مخزن مبدأ تنظیم می‌کند. مخزن حاصل در ابتدا هیچ شیء اختصاصی از خود ندارد.

نکته
این یک عملیات بالقوه خطرناک است؛ از آن استفاده نکنید مگر اینکه کاملاً متوجه کارکرد آن باشید. اگر مخزن خود را با این گزینه کلون کنید و سپس در مخزن مبدأ شاخه‌هایی را حذف کنید (یا هر دستور گیت دیگری را اجرا کنید که هر کامیت موجودی را بدون ارجاع کند)، ممکن است برخی از اشیاء بدون ارجاع (یا آویزان) شوند. این اشیاء ممکن است توسط عملیات عادی گیت (مانند git commit) که به‌طور خودکار دستور git maintenance run --auto را فراخوانی می‌کنند حذف شوند. (نگاه کنید به git-maintenance(1).) اگر این اشیاء حذف شوند و توسط مخزن کلون‌شده ارجاع داده شده باشند، مخزن کلون‌شده آسیب دیده و خراب خواهد شد.
توجه داشته باشید که اجرای دستور git repack بدون گزینه --local در مخزنی که با --shared کلون شده است، اشیاء را از مخزن مبدأ درون یک بسته (pack) در مخزن کلون‌شده کپی می‌کند و صرفه‌جویی فضای دیسک ناشی از clone --shared را خنثی می‌سازد. با این حال، اجرای دستور git gc که به‌طور پیش‌فرض از گزینه --local استفاده می‌کند، ایمن است.

اگر می‌خواهید وابستگی مخزنی را که با --shared کلون شده به مخزن مبدأ آن قطع کنید، می‌توانید به سادگی دستور git repack -a را اجرا کنید تا تمام اشیاء از مخزن مبدأ به درون یک بسته در مخزن کلون‌شده کپی شوند.

--reference=<repository>, --reference-if-able=<repository>

اگر مخزن مرجع <repository> روی ماشین محلی باشد، به‌طور خودکار فایل .git/objects/info/alternates را برای دریافت اشیاء از مخزن مرجع <repository> تنظیم می‌کند. استفاده از یک مخزن موجود به‌عنوان جایگزین، به کپی شدن اشیاء کمتری از مخزن در حال کلون نیاز خواهد داشت و هزینه‌های شبکه و فضای ذخیره‌سازی محلی را کاهش می‌دهد. هنگام استفاده از --reference-if-able، در صورت عدم وجود دایرکتوری، به جای متوقف کردن عملیات کلون، صرفاً با یک هشدار از آن صرف‌نظر می‌شود.

نکته
نکته مربوط به گزینه --shared و همچنین گزینه --dissociate را ببینید.

--dissociate

اشیاء را از مخازن مرجع مشخص‌شده با گزینه‌های --reference تنها به منظور کاهش انتقال داده‌های شبکه قرض می‌گیرد، و پس از اتمام کلون با ایجاد کپی‌های محلی لازم از اشیاء قرض‌گرفته‌شده، قرض گرفتن از آن‌ها را متوقف می‌کند. این گزینه همچنین می‌تواند هنگام کلون محلی از مخزنی استفاده شود که خود اشیاء را از مخزن دیگری قرض می‌گیرد — مخزن جدید اشیاء را از همان مخزن قرض خواهد گرفت، و این گزینه می‌تواند برای متوقف کردن این قرض‌گیری به کار رود.

-q, --quiet

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

-v, --verbose

با جزئیات کامل اجرا می‌شود. تأثیری بر گزارش وضعیت پیشرفت در جریان خطای استاندارد ندارد.

--progress

هنگامی که خروجی به یک ترمینال متصل باشد، وضعیت پیشرفت به‌طور پیش‌فرض در جریان خطای استاندارد گزارش می‌شود، مگر اینکه --quiet مشخص شده باشد. این فلگ نمایش وضعیت پیشرفت را حتی اگر جریان خطای استاندارد به ترمینال هدایت نشده باشد اجباری می‌کند.

--server-option=<option>

هنگام برقراری ارتباط با استفاده از نسخه ۲ پروتکل، رشته داده‌شده را به سرور منتقل می‌کند. رشته ارائه‌شده نباید حاوی نویسه NUL یا LF باشد. نحوه رفتار سرور با گزینه‌های سرور، از جمله گزینه‌های ناشناخته، وابسته به سرور است. هنگامی که چند گزینه --server-option=<option> داده شود، همگی به ترتیبی که در خط فرمان ذکر شده‌اند به طرف دیگر ارسال می‌شوند. هنگامی که هیچ --server-option=<option> در خط فرمان مشخص نشده باشد، در عوض مقادیر متغیر پیکربندی remote.<name>.serverOption به کار می‌روند.

-n, --no-checkout

پس از اتمام کلون، HEAD را دریافت (checkout) نمی‌کند.

--no-reject-shallow, --reject-shallow

اگر مخزن مبدأ یک مخزن کم‌عمق باشد، عملیات با شکست مواجه می‌شود. از متغیر پیکربندی clone.rejectShallow می‌توان برای تعیین حالت پیش‌فرض استفاده کرد.

--bare

یک مخزن گیت لخت یا تهی (bare) ایجاد می‌کند. بدین معنا که به جای ایجاد دایرکتوری <directory> و قرار دادن فایل‌های مدیریتی در <directory>/.git، خود <directory> را به $GIT_DIR تبدیل می‌کند. این گزینه آشکارا متضمن --no-checkout است زیرا جایی برای دریافت درخت کاری وجود ندارد. همچنین سرشاخه‌ها در سرور دوردست مستقیماً در سرشاخه‌های محلی متناظر کپی می‌شوند، بدون اینکه به refs/remotes/origin/ نگاشت شوند. هنگام استفاده از این گزینه، نه شاخه‌های ردگیری دوردست و نه متغیرهای پیکربندی مرتبط ایجاد نمی‌شوند.

--sparse

از دریافت تنک (sparse-checkout) استفاده می‌کند، به طوری که در ابتدا تنها فایل‌های موجود در بالاترین سطح دایرکتوری حضور دارند. از دستور git-sparse-checkout(1) می‌توان برای گسترش دایرکتوری کاری بر حسب نیاز استفاده کرد.

--filter=<filter-spec>

از قابلیت کلون جزئی (partial clone) بهره می‌گیرد و درخواست می‌کند که سرور زیرمجموعه‌ای از اشیاء قابل دسترس را بر اساس یک فیلتر اشیاء داده‌شده ارسال کند. هنگام استفاده از --filter، مقدار مشخص‌شده در <filter-spec> برای فیلتر کلون جزئی استفاده می‌شود.

اگر --filter=auto استفاده شود، مشخصات فیلتر به‌طور خودکار از طریق پروتکل promisor-remote (نگاه کنید به gitprotocol-v2(5)) با ترکیب مشخصات فیلتر اعلام‌شده توسط سرور برای مخازن دوردست ضامن (promisor remotes) که کلاینت می‌پذیرد (گزینه پیکربندی promisor.acceptFromServer در git-config(1) را ببینید) تعیین می‌گردد. این به سرور اجازه می‌دهد تا فیلتر بهینه را برای مخازن دوردست ضامن موجود پیشنهاد دهد.

مانند سایر مشخصات فیلتر، مقدار "auto" در پیکربندی ذخیره و ماندگار می‌شود. این تضمین می‌کند که واکشی‌های آینده همچنان با پیشنهاد فعلی سرور سازگار شوند.

برای جزئیات مربوط به تمام مشخصات فیلتر موجود، گزینه --filter=<filter-spec> در git-rev-list(1) را ببینید.

برای نمونه، --filter=blob:none تمام blobها (محتویات فایل‌ها) را تا زمانی که گیت به آن‌ها نیاز پیدا کند فیلتر می‌کند. همچنین، --filter=blob:limit=<size> تمام blobهای با اندازه دست‌کم <size> را فیلتر می‌کند.

--also-filter-submodules

فیلتر کلون جزئی را روی تمامی زیرماژول‌های موجود در مخزن نیز اعمال می‌کند. نیازمند --filter و --recurse-submodules است. این گزینه می‌تواند با تنظیم گزینه پیکربندی clone.filterSubmodules به‌طور پیش‌فرض فعال شود.

--mirror

یک آینه (mirror) از مخزن مبدأ راه‌اندازی می‌کند. این گزینه متضمن --bare است. در مقایسه با --bare، گزینه --mirror نه تنها شاخه‌های محلی مبدأ را به شاخه‌های محلی مقصد نگاشت می‌کند، بلکه تمامی مراجع (شامل شاخه‌های ردگیری دوردست، یادداشت‌ها و غیره) را نگاشت کرده و یک پیکربندی refspec را تنظیم می‌کند به طوری که تمام این مراجع با یک دستور git remote update در مخزن مقصد بازنویسی شوند.

-o<name>, --origin=<name>

به جای استفاده از نام دوردست origin برای ردگیری مخزن بالادست، از <name> استفاده می‌کند. مقدار clone.defaultRemoteName را از پیکربندی لغو می‌نماید.

-b<name>, --branch=<name>

اشاره‌گر HEAD تازه‌ساخته‌شده را به جای شاخه‌ای که HEAD مخزن کلون‌شده به آن اشاره می‌کند، به شاخه <name> اشاره می‌دهد. در یک مخزن غیرتهی (non-bare)، این شاخه‌ای است که دریافت (checkout) خواهد شد. گزینه --branch همچنین می‌تواند تگ‌ها را بپذیرد و در مخزن حاصل HEAD را روی آن کامیت جدا (detach) کند.

--revision=<rev>

یک مخزن جدید ایجاد می‌کند، و تاریخچه منتهی به بازنگری (revision) داده‌شده <rev> (و هیچ چیز دیگری) را بدون ساختن هیچ شاخه ردگیری دوردست و بدون ساختن هیچ شاخه محلی واکشی می‌کند، و HEAD را روی <rev> جدا (detach) می‌سازد. آرگومان می‌تواند یک نام مرجع (مانند refs/heads/main یا refs/tags/v1.0) باشد که به یک کامیت ختم شود، یا یک نام شیء هگزادسیمال باشد. این گزینه با گزینه‌های --branch و --mirror ناسازگار است.

-u<upload-pack>, --upload-pack=<upload-pack>

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

--template=<template-directory>

دایرکتوری‌ای را مشخص می‌کند که الگوها (templates) از آن استفاده خواهند شد؛ (بخش "TEMPLATE DIRECTORY" در git-init(1) را ببینید.)

-c<key>=<value>, --config=<key>=<value>

یک متغیر پیکربندی را در مخزن تازه‌ساخته‌شده تنظیم می‌کند؛ این امر بلافاصله پس از مقداردهی اولیه مخزن، اما پیش از واکشی تاریخچه دوردست یا دریافت (checkout) فایل‌ها اثر می‌گذارد. کلید <key> در همان قالبی است که توسط git-config(1) انتظار می‌رود (برای مثال، core.eol=true). اگر مقادیر متعددی برای یک کلید داده شود، هر مقدار در فایل پیکربندی نوشته خواهد شد. این امر برای نمونه افزودن refspecهای واکشی اضافی به مبدأ origin را ایمن می‌سازد.

به دلیل محدودیت‌های پیاده‌سازی فعلی، برخی متغیرهای پیکربندی تا پس از واکشی و checkout اولیه اثر نمی‌گذارند. متغیرهای پیکربندی شناخته‌شده‌ای که اثر نمی‌گذارند عبارتند از: remote.<name>.mirror و remote.<name>.tagOpt. به جای آن‌ها از گزینه‌های متناظر --mirror و --no-tags استفاده کنید.

--depth=<depth>

یک کلون کم‌عمق (shallow) با تاریخچه‌ای کوتاه شده به تعداد مشخص‌شده از کامیت‌ها ایجاد می‌کند. متضمن --single-branch است مگر اینکه --no-single-branch داده شود تا تاریخچه‌های نزدیک به سر تمام شاخه‌ها واکشی شوند. اگر می‌خواهید زیرماژول‌ها را نیز به‌صورت کم‌عمق کلون کنید، گزینه --shallow-submodules را نیز پاس دهید.

--shallow-since=<date>

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

--shallow-exclude=<ref>

یک کلون کم‌عمق با تاریخچه‌ای که کامیت‌های قابل دسترس از یک شاخه دوردست یا تگ مشخص در آن مستثنی شده‌اند ایجاد می‌کند. این گزینه می‌تواند چندین بار مشخص شود.

--single-branch, --no-single-branch

تنها تاریخچه منتهی به نوک یک شاخه منفرد را کلون می‌کند، که یا با گزینه --branch مشخص شده است یا شاخه اصلی است که HEAD مخزن دوردست به آن اشاره دارد. واکشی‌های بعدی به مخزن حاصل تنها شاخه ردگیری دوردست را برای شاخه‌ای به‌روزرسانی می‌کنند که این گزینه برای کلون اولیه آن استفاده شده بود. اگر هنگام انجام کلون با --single-branch اشاره‌گر HEAD در سرور دوردست به هیچ شاخه‌ای اشاره نمی‌کرد، هیچ شاخه ردگیری دوردستی ایجاد نمی‌شود.

--tags, --no-tags

کنترل می‌کند که آیا تگ‌ها کلون شوند یا خیر. هنگامی که --no-tags داده شود، این گزینه با تنظیم پیکربندی remote.<remote>.tagOpt=--no-tags دائمی خواهد شد. این امر تضمین می‌کند که دستورات بعدی git pull و git fetch هیچ تگی را دنبال نکنند. واکشی‌های صریح بعدی تگ همچنان کار خواهند کرد (نگاه کنید به git-fetch(1).)

به‌طور پیش‌فرض، تگ‌ها کلون می‌شوند و ارسال --tags بنابراین معمولاً اثری ندارد (no-op)، مگر اینکه گزینه قبلی --no-tags را خنثی کند.

می‌تواند همراه با --single-branch استفاده شود تا شاخه‌ای بدون هیچ مرجع دیگری غیر از یک شاخه کلون‌شده نگهداری و اداره شود. این موضوع برای نمونه برای نگهداری کلون‌های کمینه از شاخه پیش‌فرض یک مخزن به منظور نمایه‌سازی جستجو مفید است.

--recurse-submodules[=<pathspec>]

پس از ایجاد کلون، زیرماژول‌های درون آن را بر اساس <pathspec> ارائه‌شده مقداردهی اولیه و کلون می‌کند. اگر هیچ مقداری برای =<pathspec> ارائه نشود، تمامی زیرماژول‌ها مقداردهی اولیه و کلون می‌شوند. این گزینه می‌تواند چندین بار برای الگوهای مسیری متشکل از چند مدخل مشخص شود. در کلون حاصل، گزینه submodule.active روی الگوی مسیر ارائه‌شده، یا "." (به معنای تمام زیرماژول‌ها) در صورت عدم ارائه الگوی مسیر، تنظیم می‌گردد.

زیرماژول‌ها با استفاده از تنظیمات پیش‌فرض خود مقداردهی اولیه و کلون می‌شوند. این معادل با اجرای بلافاصله دستور git submodule update --init --recursive <pathspec> پس از پایان عملیات کلون است. اگر مخزن کلون‌شده درخت کاری/checkout نداشته باشد (یعنی اگر هر یک از گزینه‌های --no-checkout/-n، --bare، یا --mirror داده شده باشد) این گزینه نادیده گرفته می‌شود.

--shallow-submodules, --no-shallow-submodules

تمام زیرماژول‌هایی که کلون می‌شوند کم‌عمق و با عمق ۱ خواهند بود.

--remote-submodules, --no-remote-submodules

تمام زیرماژول‌هایی که کلون می‌شوند، به جای استفاده از SHA-1 ثبت‌شده در پروژه بالادست (superproject)، از وضعیت شاخه ردگیری دوردست زیرماژول برای به‌روزرسانی آن استفاده خواهند کرد. معادل با ارسال --remote به git submodule update.

--separate-git-dir=<git-dir>

به جای قرار دادن مخزن کلون‌شده در جایی که قرار است باشد، آن را در دایرکتوری مشخص‌شده قرار می‌دهد، سپس یک پیوند نمادین گیت مستقل از سامانه فایل به آنجا می‌سازد. نتیجه این است که مخزن گیت می‌تواند از درخت کاری جدا شود.

--ref-format=<ref-format>

قالب ذخیره‌سازی مراجع را برای مخزن مشخص می‌کند. مقادیر معتبر عبارتند از:

files

برای فایل‌های مستقل با packed-refs. این حالت پیش‌فرض است.

reftable

برای قالب reftable.

-j<n>, --jobs=<n>

تعداد زیرماژول‌هایی که به طور هم‌زمان واکشی می‌شوند. پیش‌فرض آن مقدار گزینه submodule.fetchJobs است.

<repository>

مخزن (احتمالاً دوردست) <repository> که کلون از آن انجام می‌شود. برای اطلاعات بیشتر درباره نحوه مشخص کردن مخازن، بخش نشانی‌های گیت (GIT URLS) در زیر را ببینید.

<directory>

نام یک دایرکتوری جدید برای کلون کردن درون آن. اگر هیچ <directory> به‌طور صریح داده نشود، بخش «شبه‌انسانی» مخزن مبدأ استفاده می‌شود (repo برای /path/to/repo.git و foo برای host.xz:foo/.git). کلون کردن درون یک دایرکتوری موجود تنها در صورتی مجاز است که آن دایرکتوری خالی باشد.

--bundle-uri=<uri>

پیش از واکشی از سرور دوردست، یک بسته باندل را از <uri> داده‌شده واکشی کرده و داده‌ها را در مخزن محلی از بسته باز (unbundle) می‌کند. مراجع موجود در باندل در فضای نام پنهان refs/bundle/* ذخیره خواهند شد. این گزینه با گزینه‌های --depth، --shallow-since و --shallow-exclude ناسازگار است.

به‌طور کلی، نشانی‌ها (URL) حاوی اطلاعاتی درباره پروتکل انتقال، نشانی سرور دوردست و مسیر مخزن هستند. بسته به پروتکل انتقال، ممکن است برخی از این اطلاعات وجود نداشته باشند.

گیت از پروتکل‌های ssh، git، http و https پشتیبانی می‌کند (علاوه بر این، ftp و ftps می‌توانند برای واکشی استفاده شوند، اما این کار ناکارآمد و منسوخ است؛ از آن‌ها استفاده نکنید).

انتقال بومی (یعنی نشانی git://) هیچ‌گونه احراز هویتی انجام نمی‌دهد و باید در شبکه‌های ناامن با احتیاط استفاده شود.

قالب‌های ساختاری زیر می‌توانند با آن‌ها استفاده شوند:

•ssh://[<user>@]<host>[:<port>]/<path-to-git-repo>
•git://<host>[:<port>]/<path-to-git-repo>
•http[s]://<host>[:<port>]/<path-to-git-repo>
•ftp[s]://<host>[:<port>]/<path-to-git-repo>

همچنین می‌توان یک نحو جایگزین شبیه scp را با پروتکل ssh استفاده کرد:

•[<user>@]<host>:/<path-to-git-repo>

این نحو تنها در صورتی تشخیص داده می‌شود که هیچ اسلشی قبل از اولین دو‌نقطه نباشد. این امر به تمایز مسیر محلی که حاوی دو‌نقطه است کمک می‌کند. برای نمونه، مسیر محلی foo:bar می‌تواند به‌صورت یک مسیر مطلق یا ./foo:bar مشخص شود تا از تفسیر نادرست آن به‌عنوان یک نشانی ssh جلوگیری شود.

پروتکل‌های ssh و git علاوه بر این از بسط ~<username> پشتیبانی می‌کنند:

•ssh://[<user>@]<host>[:<port>]/~<user>/<path-to-git-repo>
•git://<host>[:<port>]/~<user>/<path-to-git-repo>
•[<user>@]<host>:~<user>/<path-to-git-repo>

برای مخازن محلی، که به‌طور بومی توسط گیت نیز پشتیبانی می‌شوند، می‌توان از نحوهای زیر استفاده کرد:

•/path/to/repo.git/
•file:///path/to/repo.git/

این دو نحو عمدتاً معادل هستند، به جز اینکه اولی متضمن گزینه --local است.

دستورهای git clone، git fetch و git pull (اما نه git push) یک فایل باندل مناسب را نیز می‌پذیرند. نگاه کنید به git-bundle(1).

هنگامی که گیت روش کار با یک پروتکل انتقال معین را نمی‌داند، تلاش می‌کند از دستیار دوردست remote-<transport> در صورت وجود استفاده کند. برای درخواست صریح یک دستیار دوردست، می‌توان از نحو زیر استفاده کرد:

•<transport>::<address>

که در آن <address> می‌تواند یک مسیر، یک سرور و مسیر، یا یک رشته دلخواه شبیه نشانی باشد که توسط دستیار دوردست مربوطه فراخوانی‌شده شناسایی می‌شود. برای جزئیات به gitremote-helpers(7) مراجعه کنید.

اگر تعداد زیادی مخزن دوردست با نام‌های مشابه وجود دارد و می‌خواهید فرمت متفاوتی برای آن‌ها استفاده کنید (به گونه‌ای که نشانی‌های مورداستفاده شما به نشانی‌هایی که کار می‌کنند بازنویسی شوند)، می‌توانید یک بخش پیکربندی به این شکل بسازید:

[url "<actual-url-base>"]
        insteadOf = <other-url-base>

برای نمونه، با این تنظیم:

[url "git://git.host.xz/"]
        insteadOf = host.xz:/path/to/
        insteadOf = work:

یک نشانی مانند "work:repo.git" یا مانند "host.xz:/path/to/repo.git" در هر زمینه‌ای که یک نشانی می‌پذیرد به "git://git.host.xz/repo.git" بازنویسی خواهد شد.

اگر می‌خواهید نشانی‌ها را فقط برای push بازنویسی کنید، می‌توانید یک بخش پیکربندی به این شکل بسازید:

[url "<actual-url-base>"]
        pushInsteadOf = <other-url-base>

برای نمونه، با این تنظیم:

[url "ssh://example.org/"]
        pushInsteadOf = git://example.org/

یک نشانی مانند "git://example.org/path/to/repo.git" برای ارسال‌ها (push) به "ssh://example.org/path/to/repo.git" بازنویسی می‌شود، اما دریافت‌ها (pull) همچنان از نشانی اصلی استفاده خواهند کرد.

•کلون کردن از بالادست:
$ git clone git://git.kernel.org/pub/scm/.../linux.git my-linux
$ cd my-linux
$ make
•ایجاد یک کلون محلی که از دایرکتوری فعلی اشیاء را قرض می‌گیرد، بدون دریافت (checkout) فایل‌ها:
$ git clone -l -s -n . ../copy
$ cd ../copy
$ git show-branch
•کلون کردن از بالادست در حالی که از یک دایرکتوری محلی موجود اشیاء را قرض می‌گیرد:
$ git clone --reference /git/linux.git \
        git://git.kernel.org/pub/scm/.../linux.git \
        my-linux
$ cd my-linux
•ایجاد یک مخزن تهی (bare) برای انتشار تغییرات خود به عموم:
$ git clone --bare -l /home/proj/.git /pub/scm/proj.git
•کلون کردن یک مخزن محلی از یک کاربر دیگر:
$ git clone --no-local /home/otheruser/proj.git /pub/scm/proj.git

تمام موارد زیر این خط در این بخش به‌صورت گزینشی از مستندات git-config(1) گنجانده شده است. محتوای آن همان چیزی است که در آنجا یافت می‌شود:

init.templateDir

دایرکتوری‌ای را مشخص می‌کند که قالب‌ها از آن کپی خواهند شد. (بخش "TEMPLATE DIRECTORY" در git-init(1) را ببینید.)

init.defaultBranch

امکان لغو و تغییر نام شاخه پیش‌فرض را برای نمونه هنگام مقداردهی اولیه یک مخزن جدید فراهم می‌کند.

init.defaultObjectFormat

امکان لغو و تغییر قالب پیش‌فرض اشیاء برای مخازن جدید را فراهم می‌کند. نگاه کنید به --object-format= در git-init(1). هم گزینه خط فرمان و هم متغیر محیطی GIT_DEFAULT_HASH بر این تنظیم پیکربندی اولویت دارند.

init.defaultRefFormat

امکان لغو و تغییر قالب پیش‌فرض ذخیره‌سازی مراجع را برای مخازن جدید فراهم می‌کند. نگاه کنید به --ref-format= در git-init(1). هم گزینه خط فرمان و هم متغیر محیطی GIT_DEFAULT_REF_FORMAT بر این تنظیم پیکربندی اولویت دارند.

init.defaultSubmodulePathConfig

یک مقدار بولی که مشخص می‌کند آیا git init و git clone باید به‌طور خودکار extensions.submodulePathConfig را روی true تنظیم کنند یا خیر. این امر اجازه می‌دهد تمام مخازن جدید به‌طور خودکار از افزونه مسیر زیرماژول استفاده کنند. در صورت عدم تنظیم، مقدار پیش‌فرض آن false است.

clone.defaultRemoteName

نام سرور دوردستی که هنگام کلون کردن یک مخزن ایجاد می‌شود. مقدار پیش‌فرض آن origin است. می‌توان آن را با ارسال گزینه خط فرمان --origin لغو کرد.

clone.rejectShallow

در صورتی که مخزن یک مخزن کم‌عمق باشد، کلون کردن آن را رد می‌کند؛ این رفتار را می‌توان با ارسال گزینه --reject-shallow در خط فرمان لغو کرد.

clone.filterSubmodules

اگر یک فیلتر کلون جزئی ارائه شده باشد (نگاه کنید به --filter در git-rev-list(1)) و از --recurse-submodules استفاده شود، فیلتر را روی زیرماژول‌ها نیز اعمال می‌کند.

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

2026-06-29 Git 2.55.0