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

git-init - ایجاد یک مخزن خالی گیت یا مقداردهی اولیه مجدد یک مخزن موجود

git init [-q | --quiet] [--bare] [--template=<template-directory>]
         [--separate-git-dir <git-dir>] [--object-format=<format>]
         [--ref-format=<format>]
         [-b <branch-name> | --initial-branch=<branch-name>]
         [--shared[=<permissions>]] [<directory>]

این دستور یک مخزن خالی گیت ایجاد می‌کند - اساساً یک دایرکتوری .git به همراه زیرپوشه‌هایی برای objects، refs/heads، refs/tags و فایل‌های الگو. یک شاخه اولیه بدون هیچ کامیتی ایجاد خواهد شد (برای نام آن به گزینه --initial-branch در زیر مراجعه کنید).

اگر متغیر محیطی GIT_DIR تنظیم شده باشد، مسیری را مشخص می‌کند که باید به‌جای ./.git به عنوان پایه مخزن استفاده شود.

اگر دایرکتوری ذخیره‌سازی اشیاء از طریق متغیر محیطی GIT_OBJECT_DIRECTORY مشخص شده باشد، دایرکتوری‌های sha1 در زیر آن ایجاد می‌شوند؛ در غیر این صورت، از دایرکتوری پیش‌فرض $GIT_DIR/objects استفاده می‌شود.

اجرای git init در یک مخزن موجود بی‌خطر است. این دستور مواردی را که از قبل وجود دارند بازنویسی نمی‌کند. دلیل اصلی اجرای مجدد git init دریافت الگوهای تازه اضافه‌شده است (یا انتقال مخزن به مکانی دیگر در صورت مشخص شدن --separate-git-dir).

-q, --quiet

تنها چاپ پیام‌های خطا و هشدار؛ تمامی خروجی‌های دیگر سرکوب خواهند شد.

--bare

ایجاد یک مخزن لخت (bare repository). اگر متغیر محیطی GIT_DIR تنظیم نشده باشد، روی دایرکتوری کاری جاری تنظیم می‌شود.

--object-format=<format>

مشخص کردن <format> شیء داده‌شده (الگوریتم هش) برای مخزن. مقادیر معتبر عبارتند از sha1 و (در صورت فعال بودن) sha256. مقدار پیش‌فرض sha1 است.

توجه: در حال حاضر، هیچ‌گونه تعامل‌پذیری میان مخازن SHA-256 و مخازن SHA-1 وجود ندارد.

از نظر تاریخی، ما هشدار می‌دادیم که ممکن است مخازن SHA-256 بعدها هنگام معرفی چنین قابلیت‌های تعامل‌پذیری به تغییرات ناسازگار با گذشته نیاز داشته باشند. امروزه ما فقط انتظار تغییرات سازگار را داریم. علاوه بر این، اگر چنین تغییراتی ضروری تشخیص داده شوند، می‌توان انتظار داشت که مخازن SHA-256 ایجادشده با نسخه کنونی گیت توسط نسخه‌های آینده گیت بدون از دست رفتن داده‌ها قابل استفاده باشند.

--ref-format=<format>

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

files

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

reftable

برای قالب reftable.

--template=<template-directory>

مشخص کردن دایرکتوری که الگوها از آن استفاده خواهند شد. (به بخش «دایرکتوری الگو» در زیر مراجعه کنید.)

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

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

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

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

استفاده از <branch-name> برای شاخه اولیه در مخزن تازه‌ساخته‌شده. در صورت عدم تعیین، به نام پیش‌فرض (در حال حاضر master، اما این مقدار پس از انتشار Git 3.0 به main تغییر خواهد یافت) برمی‌گردد. نام پیش‌فرض می‌تواند از طریق متغیر پیکربندی init.defaultBranch سفارشی‌سازی شود.

--shared[=(false|true|umask|group|all|world|everybody|<perm>)]

مشخص می‌کند که مخزن گیت قرار است بین چندین کاربر به اشتراک گذاشته شود. این به کاربرانی که متعلق به یک گروه مشترک هستند اجازه می‌دهد به آن مخزن push کنند. در صورت تعیین این گزینه، متغیر پیکربندی core.sharedRepository طوری تنظیم می‌شود که فایل‌ها و دایرکتوری‌های زیر $GIT_DIR با دسترسی‌های درخواستی ایجاد شوند. در صورت عدم تعیین، گیت از دسترسی‌های گزارش‌شده توسط umask(2) استفاده خواهد کرد.

این گزینه می‌تواند مقادیر زیر را داشته باشد، که در صورت عدم تعیین مقدار، به صورت پیش‌فرض group خواهد بود:

umask, false

استفاده از دسترسی‌های گزارش‌شده توسط umask(2). این حالت پیش‌فرض در صورت عدم تعیین --shared است.

group, true

مخزن را برای گروه قابل نوشتن می‌کند (و همچنین g+sx، زیرا ممکن است گروه git گروه اصلی همه کاربران نباشد). این گزینه برای تسهیل دسترسی‌های یک مقدار ایمن umask(2) استفاده می‌شود. توجه داشته باشید که umask همچنان بر سایر بیت‌های دسترسی اعمال می‌شود (برای مثال اگر umask برابر با 0022 باشد، استفاده از group دسترسی خواندن را از سایر کاربران (خارج از گروه) حذف نخواهد کرد). برای نحوه تعیین دقیق دسترسی‌های مخزن، به 0xxx مراجعه کنید.

all, world, everybody

مشابه group، اما مخزن را برای همه کاربران قابل خواندن می‌کند.

<perm>

شناسه <perm> یک عدد اکتال ۳ رقمی با پیشوند ‘0` است و هر فایل دارای حالت <perm> خواهد بود. مقدار <perm> مقدار umask(2) کاربران را بازنویسی می‌کند (و صرفاً مانند group و all محدودیت دسترسی‌ها را کاهش نمی‌دهد). مقدار 0640 مخزنی ایجاد می‌کند که برای گروه قابل خواندن است، اما برای گروه قابل نوشتن نیست و برای دیگران نیز غیرقابل دسترس است. مقدار 0660 مخزنی ایجاد می‌کند که برای کاربر و گروه جاری قابل خواندن و نوشتن است، اما برای دیگران غیرقابل دسترس است (دایرکتوری‌ها و فایل‌های اجرایی بیت x خود را از بیت r دسته‌های متناظر کاربران دریافت می‌کنند).

به‌طور پیش‌فرض، فلگ پیکربندی receive.denyNonFastForwards در مخازن اشتراکی فعال است، تا نتوانید یک push بدون پیش‌روی سریع را به آن تحمیل کنید.

اگر یک <directory> ارائه دهید، دستور در داخل آن اجرا می‌شود. اگر این دایرکتوری وجود نداشته باشد، ایجاد خواهد شد.

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

دایرکتوری الگو یکی از موارد زیر (به ترتیب) خواهد بود:

•آرگومان ارائه‌شده با گزینه --template؛
•محتویات متغیر محیطی $GIT_TEMPLATE_DIR؛
•متغیر پیکربندی init.templateDir؛ یا
•دایرکتوری پیش‌فرض الگو: /usr/share/git-core/templates.

دایرکتوری پیش‌فرض الگو شامل ساختار دایرکتوری، «الگوهای نادیده‌گیری» پیشنهادی (به gitignore(5) مراجعه کنید)، و فایل‌های هوک نمونه است.

هوک‌های نمونه همگی به‌طور پیش‌فرض غیرفعال هستند. برای فعال‌سازی یکی از هوک‌های نمونه، آن را با حذف پسوند .sample تغییر نام دهید.

برای اطلاعات عمومی‌تر در مورد اجرای هوک‌ها به githooks(5) مراجعه کنید.

شروع یک مخزن جدید گیت برای یک پایه‌کد موجود

$ cd /path/to/my/codebase
$ git init      (1)
$ git add .     (2)
$ git commit    (3)
1. ایجاد یک دایرکتوری /path/to/my/codebase/.git.
2. افزودن تمام فایل‌های موجود به ایندکس.
3. ثبت وضعیت اولیه به عنوان اولین کامیت در تاریخچه.

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

init.templateDir

دایرکتوری را مشخص می‌کند که الگوها از آن کپی خواهند شد.

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 است.

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

2026-06-29 Git 2.55.0