clone [<options>] <url> [<enlistment>]
مخزن
مشخصشده
را مشابه
git-clone(1)
کلون
میکند.
بهطور
پیشفرض،
فقط اشیاء
کامیت و
درخت کلون
میشوند. پس
از اتمام،
درخت کاری
در
<enlistment>/src
قرار
میگیرد.
قابلیت
دریافت
پراکنده (sparse-checkout)
فعال است (به
جز زمانی که
با --full-clone اجرا
شود) و تنها
فایلهای
موجود،
فایلهای
سطح بالای
دایرکتوری
هستند. از git
sparse-checkout set برای
گسترش
مجموعه
دایرکتوریهایی
که
میخواهید
ببینید، یا
از git sparse-checkout disable
برای گسترش
به تمام
فایلها
استفاده
کنید (برای
جزئیات
بیشتر به
git-sparse-checkout(1)
مراجعه
فرمایید).
میتوانید
زیرپوشههای
خارج از sparse-checkout
خود را با
استفاده از
git ls-tree HEAD[:<directory>]
بررسی
کنید.
-b <name>, --branch <name>
بهجای
دریافت
شاخهای که HEAD
مخزن
کلونشده
به آن اشاره
دارد، شاخه
<name> را
دریافت (checkout)
میکند.
--single-branch, --no-single-branch
تنها
تاریخچه
منتهی به
نوک یک شاخه
واحد را
کلون
میکند، چه
توسط گزینه
--branch مشخص شده
باشد و چه
شاخه اصلی
که
HEAD ریموت
به آن اشاره
میکند.
دریافتهای
بعدی در
مخزن حاصل
تنها شاخه
ردیابی
ریموت را
برای
شاخهای که
این گزینه
برای کلون
اولیه آن به
کار رفته
بود
بهروزرسانی
میکنند.
اگر HEAD در
ریموت
هنگام
ایجاد کلون
با --single-branch به
هیچ
شاخهای
اشاره
نکرده
باشد، هیچ
شاخه
ردیابی
ریموتی
ایجاد
نمیشود.
--src, --no-src
بهطور
پیشفرض، scalar
clone مخزن
کلونشده
را درون یک
دایرکتوری
<enlistment>/src قرار
میدهد. از
--no-src برای
قرار دادن
مخزن
کلونشده
مستقیماً
درون
دایرکتوری
<enlistment>
استفاده
کنید.
--tags, --no-tags
بهطور
پیشفرض، scalar
clone اشیاء تگ
اعلامشده
توسط ریموت
را دریافت
میکند و
دستورات
بعدی git fetch
نیز همین
کار را
انجام
خواهند داد.
از --no-tags برای
جلوگیری از
دریافت
تگها در scalar
clone و
پیکربندی
مخزن به
منظور
جلوگیری از
دریافت
تگها در
آینده
استفاده
کنید. برای
دریافت
تگها پس از
کلون با --no-tags،
دستور git fetch --tags
را اجرا
کنید.
--full-clone, --no-full-clone
قابلیت
دریافت
پراکنده (sparse-checkout)
بهطور
پیشفرض
راهاندازی
میشود. این
رفتار را
میتوان با
--full-clone غیرفعال
کرد.
--maintenance, --no-maintenance
بهطور
پیشفرض، scalar
clone enlistment را طوری
پیکربندی
میکند که
از قابلیت
نگهداری در
پسزمینه
گیت
استفاده
کند. از
گزینه --no-maintenance
برای
صرفنظر
کردن از این
پیکربندی
استفاده
کنید.
list
فهرست
enlistmentهایی را که
هماکنون
توسط
اسکلار ثبت
شدهاند
نمایش
میدهد. این
زیردستور
نیازی به
اجرا درون
یک enlistment ندارد.
register [<enlistment>]
مخزن enlistment
را به فهرست
مخازن
ثبتشده
اضافه کرده
و نگهداری
پسزمینه
را آغاز
میکند. اگر
<enlistment> ارائه
نشود، enlistment
مرتبط با
دایرکتوری
کاری جاری
ثبت میشود.
نکته:
هنگامی که
این
زیردستور
در یک درخت
کاری با نام
src/ فراخوانی
شود،
دایرکتوری
والد آن به
عنوان Scalar enlistment
تلقی
میگردد.
اگر درخت
کاری src/
نامیده
نشده
باشد، خود
آن به عنوان
Scalar enlistment در نظر
گرفته
خواهد شد.
--maintenance, --no-maintenance
بهطور
پیشفرض، scalar
register پوشه enlistment را
طوری
پیکربندی
میکند که
از قابلیت
نگهداری در
پسزمینه
گیت
استفاده
کند. از
گزینه --no-maintenance
برای
صرفنظر
کردن از این
پیکربندی
استفاده
کنید. این
کار هیچ
نگهداری
دیگری را که
ممکن است
قبلاً از
روشهای
دیگر فعال
شده باشد
غیرفعال
نمیکند.
unregister [<enlistment>]
مخزن
مشخصشده
را از فهرست
مخازن
ثبتشده در
اسکلار حذف
کرده و
نگهداری
زمانبندیشده
در
پسزمینه
را متوقف
میسازد.
scalar run ( all | config | commit-graph | fetch | loose-objects |
pack-files ) [<enlistment>]
وظیفه
نگهداری
دادهشده
(یا تمام
وظایف در
صورت مشخص
شدن
all) را
اجرا
میکند. به
جز
all و
config،
این
زیردستور
وظایف را
مستقیماً
به
git-maintenance(1)
تحویل
میدهد (با
نگاشت
fetch به
prefetch و
pack-files به
incremental-repack).
این وظایف
به محض ثبت
مخزن در
اسکلار، به
صورت
خودکار به
عنوان بخشی
از نگهداری
زمانبندیشده
اجرا
میشوند.
بنابراین
نباید
نیازی به
اجرای دستی
این
زیردستور
وجود داشته
باشد.
وظیفه config
مختص
اسکلار است
و تمام
تنظیمات
پیشفرضی
را
پیکربندی
میکند که
عملکرد گیت
را در کار با
مخازن بزرگ
بهینهتر
میسازند.
از آنجا که
این وظیفه
به صورت
خودکار به
عنوان بخشی
از scalar clone اجرا
میشود،
فراخوانی
مستقیم آن
به ندرت
مورد نیاز
است.
پس از
ارتقای
اسکلار، یا
زمانی که
پیکربندی
یک enlistment اسکلار
به شکلی
خراب شده یا
به اشتباه
تغییر کرده
باشد، این
زیردستور
امکان
پیکربندی
مجدد enlistment را
فراهم
میکند.
--all
هنگامی
که --all مشخص
شود، تمام
enlistmentهایی را که
هماکنون
از طریق
کلید
پیکربندی
scalar.repo در
اسکلار ثبت
شدهاند
مجدداً
پیکربندی
میکند. از
این گزینه
پس از هر
ارتقا برای
بهرهمندی
از آخرین
ویژگیها
استفاده
کنید.
--maintenance=(enable|disable|keep)
بهطور
پیشفرض،
اسکلار enlistment را
طوری
پیکربندی
میکند که
از قابلیت
نگهداری در
پسزمینه
گیت
استفاده
کند؛ این
مشابه با
استفاده از
مقدار ‘enable’
برای این
گزینه است.
از مقدار disable
برای حذف هر
یک از enlistmentهای
مدنظر از
نگهداری
پسزمینه
استفاده
کنید. از ‘keep’
برای
دستنخورده
باقی
گذاشتن
پیکربندی
نگهداری
پسزمینه
برای این
مخازن
استفاده
کنید.
diagnose [<enlistment>]
هنگام
گزارش
مشکلات
اسکلار،
اغلب ارائه
اطلاعات
جمعآوریشده
توسط این
دستور،
شامل
لاگها و
برخی
آمارهای
توصیفکننده
وضعیت
دادههای enlistment
جاری بسیار
مفید است.
خروجی این
دستور یک
فایل .zip است
که در
دایرکتوری
مجاور درخت
کاری در
پوشه src
نوشته
میشود.
delete <enlistment>
این
زیردستور
به شما
امکان
میدهد تا
یک Scalar enlistment موجود
را از
فایلسیستم
محلی خود
حذف کرده و
ثبت مخزن را
لغو
نمایید.
به عنوان
بخشی از هر
دو دستور scalar
clone و scalar register،
مقادیر
پیکربندی
مشخصی در
گیت تنظیم
میشوند تا
عملکرد
برای مخازن
بزرگ یا
پشتیبانی
از
چندسکویی
(cross-platform) بهینه
گردد. این
گزینهها
در
نسخههای
جدید گیت
مطابق با
بهترین
توصیههای
شناختهشده
برای مخازن
بزرگ
بهروزرسانی
میشوند و
کاربران
میتوانند
با اجرای scalar
reconfigure [--all] آخرین
توصیهها
را دریافت
کنند.
این بخش
دلایل و
توجیهات
مربوط به
مقادیر
پیکربندی
تنظیمشده
در آخرین
نسخه را
فهرست
میکند.
am.keepCR=true
این
تنظیم برای
توسعه
چندسکویی
میان
پلتفرمهای
ویندوز و
غیرویندوز
و حفظ
کاراکترهای
carriage return (\r) در
گردشهای
کاری خاص
حائز اهمیت
است.
commitGraph.changedPaths=true
این
تنظیم به
مراحل
نگهداری در
پسزمینه
که commit-graph
سریالیشده
را محاسبه
میکنند
کمک میکند
تا
فیلترهای
بلوم
مسیرهای
تغییریافته
را نیز
ذخیره کنند.
این کار
دستورات
تاریخچه
فایل را
تسریع کرده
و به
کاربران
اجازه
میدهد
بدون نیاز
به اجرای
دستور در
پیشزمینه،
بهطور
خودکار از
این مزیت
بهرهمند
شوند.
commitGraph.generationVersion=1
در حالی
که نسخه
ترجیحی به
دلایل
عملکردی
نسخه ۲ است،
کاربران
پیشینی که
نسخه ۱ را به
طور
پیشفرض
داشتند
برای ارتقا
به نسخه ۲
نیاز به
مراقبت
ویژه دارند.
با تثبیت
فرآیند
ارتقا در
آینده،
احتمالاً
این وضعیت
تغییر
خواهد کرد.
core.autoCRLF=false
این
تنظیم
تبدیل
فایلهای
درخت کاری
برای
افزودن
پایان خطوط CRLF
را در حالی
که فقط
پایان خطوط LF
وجود
دارند، حذف
میکند. این
مورد به
دلایل
عملکردی
حذف شده است.
مخازنی که
از
ابزارهایی
با وابستگی
به انتهای
خطوط CRLF
استفاده
میکنند
باید
فایلهای
لازم را از
ابتدا با
همان پایان
خطوط کامیت
کنند.
core.logAllRefUpdates=true
این
تنظیم
قابلیت reflog را
بر روی
تمامی
شاخهها
فعال
میکند.
اگرچه این
امر در
مخازن بزرگ
هزینهای
برای
عملکرد به
همراه
دارد، اما
همواره یک
منبع داده
مهم برای
کاربران به
منظور
رهایی از
شرایط
بحرانی یا
دریافت
راهنمایی
از
کارشناسان
به شمار
میرود.
core.safeCRLF=false
مشابه با
core.autoCRLF=false، این
گزینه
بررسیهای
مربوط به
برگشتپذیر
بودن تبدیل CRLF
را غیرفعال
میکند. این
یک بهبود
عملکردی
است، اما
اگر core.autoCRLF
مجدداً
توسط کاربر
فعال شود
میتواند
مخاطرهآمیز
باشد.
credential.https://dev.azure.com.useHttpPath=true
این
تنظیم
قابلیت credential.useHttpPath
را فقط برای
آدرسهای
وب مربوط به
Azure DevOps فعال
میسازد.
این مورد
برای
کاربرانی
که با چندین
سازمان و در
نتیجه
چندین توکن
اعتبارسنجی
با آن سرویس
تعامل
دارند
اهمیت
دارد.
feature.experimental=false
این
تنظیم
بهینهسازیهای
«آزمایشی»
گروهبندیشده
تحت این
کانفیگ را
غیرفعال
میکند.
انتظار این
است که
تمامی
بهینهسازیهای
ارزشمند به
طور صریح
توسط
پیکربندی
اسکلار
تنظیم شوند
و هرگونه
تفاوت
تعمدی است.
تفاوتهای
بارز شامل
چندین
گزینه
پیکربندی
مرتبط با
بیتمپ (bitmap)
است که برای
مخازن
اسکلار
متمرکز بر
کلاینت
غیرفعال
شدهاند.
feature.manyFiles=false
این
تنظیم
بهینهسازیهای
مربوط به
«تعداد
فایلهای
زیاد»
گروهبندیشده
تحت این
ویژگی را
غیرفعال
میکند.
انتظار
میرود
تمام
بهینهسازیهای
سودمند به
طور صریح
توسط
کانفیگ
اسکلار
تنظیم شوند
و هر تفاوتی
عامدانه
است.
fetch.showForcedUpdates=false
این
تنظیم
بررسی
انتهای
دستور git fetch
را غیرفعال
میکند که
در صورت
اجباری
بودن
بهروزرسانی
ارجاع
(حالتی که
موقعیت
قبلی از
موقعیت
جدید قابل
دسترسی
نیست) به
کاربر
اطلاع
میدهد. این
بررسی در
مخازن بزرگ
میتواند
بسیار
سنگین
باشد،
بنابراین
غیرفعال
شده و با یک
پیام
راهنما
جایگزین
شده است.
مقدار
advice.fetchShowForcedUpdates=false را
برای
غیرفعال
کردن این
پیام
راهنما
تنظیم
کنید.
fetch.unpackLimit=1
این
تنظیم از
باز کردن
بستهفایلها
(packfiles) به اشیاء
منفصل حین
دانلود از
سرور توسط
گیت
جلوگیری
میکند. حد
پیشفرض
۱۰۰ با هدف
جلوگیری از
افت عملکرد
ناشی از
تعداد زیاد
بستهفایلها
در نظر
گرفته شده
بود، اما
اسکلار از
نگهداری
پسزمینه
برای
دستهبندی
بستهفایلها
و پوشش
آنها با multi-pack-index
استفاده
میکند و
این مشکل را
برطرف
میسازد.
fetch.writeCommitGraph=false
این
تنظیم برای
کمک به
کاربران
جهت
بهروزرسانی
خودکار
فایلهای commit-graph
در حین
انجام
عملیات
دریافت (fetch)
ایجاد شده
بود. با این
حال، این
کار زمان
عملیاتهای
fetch و pull در
پیشزمینه
را افزایش
میدهد و
اسکلار در
عوض برای
این کارکرد
از نگهداری
در
پسزمینه
استفاده
میکند.
gc.auto=0
این
تنظیم
جمعآوری
خودکار
زباله (garbage collection) را
غیرفعال
میکند،
چرا که
اسکلار از
نگهداری
پسزمینه
برای حفظ
سلامت
دادههای
مخزن
استفاده
مینماید.
gui.GCWarning=false
از آنجا
که اسکلار
با
مقداردهی
gc.auto=0
جمعآوری
زباله را
غیرفعال
میکند،
ابزار git-gui
ممکن است
شروع به
نمایش
هشدار
درباره این
تنظیم کند.
این هشدار
غیرفعال
میشود
زیرا
پیکربندی
نگهداری
پسزمینه
اسکلار این
هشدار را
بیمورد
میسازد.
index.skipHash=true
محاسبه
هش محتوای
نمایه (index) را
هنگام
نوشتن آن
غیرفعال
میکند. این
کار به
بهبود
کارایی، به
ویژه برای
فایلهای
ایندکس
بزرگ کمک
میکند.
index.threads=true
این
گزینه به
گیت
میگوید با
توجه به
مقدار
پیشفرض
core.preloadIndex که
خواندن
موازی
ایندکس را
فعال
میکند، به
طور خودکار
تعداد
رشتههای (threads)
مورد
استفاده در
حین خواندن
نمایه را
تشخیص دهد.
این تنظیم
صریح
همچنین
index.recordOffsetTable=true را
برای سرعت
بخشیدن به
خواندن
موازی
نمایه فعال
میسازد.
index.version=4
این نسخه
نمایه
فشردهسازی
را به نام
مسیرها
میافزاید
و اندازه
نمایه را به
شکل
چشمگیری
برای مخازن
بزرگ کاهش
میدهد. این
یک بهبود
عملکردی
بااهمیت
است.
log.excludeDecoration=refs/prefetch/*
از آنجا
که اسکلار
نگهداری در
پسزمینه
را با
استراتژی
incremental فعال
میکند،
این تنظیم
از شلوغ شدن
خروجی
دستور git log
با
ارجاعهای
ذخیرهشده
توسط
عملیات
پیشدریافت
(prefetch) پسزمینه
جلوگیری
مینماید.
merge.renames=true
هنگام
محاسبه
ادغامها (merges)
در مخازن
بزرگ،
تشخیص
تغییر
نامها
برای به
حداکثر
رساندن
احتمال
دستیابی به
نتیجهای
که به درستی
اعتبارسنجی
شود اهمیت
بالایی
دارد.
کاربرانی
که
ادغامها
را به صورت
محلی انجام
میدهند
بیشتر به
این دلیل
است که
ادغام سمت
سرور (از
طریق pull request یا
موارد
مشابه) منجر
به تعارض (conflict)
شده است.
اگرچه این
تنظیم
پیشفرض
است، اما به
طور ویژه
برای لغو
تغییر
احتمالی در
diff.renames که ممکن
است کاربر
به دلایل
عملکردی
اعمال کرده
باشد،
تنظیم
میشود.
merge.stat=false
این
تنظیم
خروجی آمار diff
را پس از
محاسبه
ادغام
غیرفعال
میکند. این
کار ضمن
کاهش
خروجیهای
غیرضروری،
عملکرد
دستور git merge
را برای
مخازن بزرگ
بهبود
میبخشد.
pack.useBitmaps=false
این
تنظیم
استفاده از
فایلهای
.bitmap
پیوستشده
به
بستهفایلها
را غیرفعال
میکند.
فایلهای
بیتمپ
برای
استفاده در
سمت سرور
بهینهسازی
شدهاند نه
سمت کلاینت.
اسکلار این
گزینه را
غیرفعال
میکند تا
از بروز
برخی
مشکلات
عملکردی که
ممکن است در
صورت ایجاد
تصادفی
فایلهای
.bitmap توسط
کاربر رخ
دهد
جلوگیری به
عمل آید.
pack.usePathWalk=true
این
تنظیم
گزینه --path-walk را
در دستور git
pack-objects به طور
پیشفرض
فعال
میکند. این
کار
میتواند
محاسبه و
فشردهسازی
بستهفایلهای
ایجادشده
توسط git push و
سایر
عملیاتهای
بستهبندی
مجدد را
تسریع کند.
receive.autoGC=false
مشابه با
gc.auto، این
تنظیم نیز
به نفع
نگهداری در
پسزمینه
غیرفعال
شده است.
status.aheadBehind=false
این
تنظیم
محاسبه
جلوتر/عقبتر
بودن (ahead/behind) را
که معمولاً
در حین
اجرای
دستور git status
رخ میدهد
غیرفعال
میسازد.
این
اطلاعات
معمولاً
توسط
کاربران
نادیده
گرفته
میشود اما
محاسبه آن
در مخازن
بزرگی که
روزانه
هزاران
کامیت
دریافت
میکنند
میتواند
بسیار
پرهزینه
باشد. این
محاسبه با
یک پیام
راهنما
جایگزین
شده است که
میتوان با
غیرفعال
کردن تنظیم
advice.statusAheadBehind آن را
غیرفعال
کرد.
تنظیمات
زیر بر اساس
پلتفرم
مورد
استفاده
متفاوت
هستند:
core.untrackedCache=(true|false)
قابلیت
حافظه
پنهان
ردیابینشده
(untracked cache) برای
بهبود
عملکرد در
مخازن بزرگ
حائز اهمیت
است، اما
باگهایی
را روی
سیستمفایلهای
ویندوز
نشان داده
است.
بنابراین،
این تنظیم
برای
پلتفرمهای
دیگر فعال
ولی در
ویندوز
غیرفعال
است.
http.sslBackend=schannel
در
ویندوز،
بکاند openssl
با برخی
ارائهدهندگان
ریموت و
انواع
گواهیها
مشکلاتی
دارد. با
بازنویسی
تنظیم
پیشفرض،
از این
مشکلات
رایج
جلوگیری
میشود.