| GIT-COMMIT-GRAPH(1) | دستورات عمومی کاربر | GIT-COMMIT-GRAPH(1) |
نام (NAME)
git-commit-graph - نوشتن و اعتبارسنجی فایلهای گراف کامیت گیت
خلاصه دستور (SYNOPSIS)
git commit-graph verify [--object-dir <dir>] [--shallow] [--[no-]progress]
git commit-graph write [--object-dir <dir>] [--append]
[--split[=<strategy>]] [--reachable | --stdin-packs | --stdin-commits]
[--changed-paths] [--[no-]max-new-filters <n>] [--[no-]progress]
<split-options>
توضیحات (DESCRIPTION)
مدیریت فایل سریالسازیشده گراف کامیت (commit-graph).
گزینهها (OPTIONS)
--object-dir
--progress, --no-progress
دستورها (COMMANDS)
write
با گزینه --stdin-packs، گراف کامیت جدید را فقط با پیمایش اشیا در نمایههای بسته (pack-indexes) مشخصشده تولید میکند. (نمیتواند با --stdin-commits یا --reachable ترکیب شود.)
با گزینه --stdin-commits، گراف کامیت جدید را با پیمایش کامیتها از کامیتهای مشخصشده در ورودی استاندارد (stdin) به صورت فهرستی از OIDها در مبنای شانزده (یک OID در هر خط) تولید میکند. OIDهایی که به غیرکامیت منتهی میشوند (خواه مستقیماً یا با باز کردن برچسبها) بدون اعلام نادیده گرفته میشوند. OIDهایی که بدفرم بوده یا وجود ندارند، یک خطا ایجاد میکنند. (نمیتواند با --stdin-packs یا --reachable ترکیب شود.)
با گزینه --reachable، گراف کامیت جدید را با پیمایش کامیتها از تمامی ارجاعها (refs) تولید میکند. (نمیتواند با --stdin-commits یا --stdin-packs ترکیب شود.)
با گزینه --append، تمام کامیتهای موجود در فایل فعلی commit-graph را شامل میشود.
با گزینه --changed-paths، اطلاعات مربوط به مسیرهای تغییریافته بین یک کامیت و نخستین والد آن را محاسبه کرده و مینویسد. این عملیات در مخازن بزرگ ممکن است مدتی طول بکشد. این گزینه بهبود کارایی قابلتوجهی برای دریافت تاریخچه یک دایرکتوری یا یک فایل با دستور git log -- <path> فراهم میکند. اگر این گزینه داده شود، نوشتنهای بعدی commit-graph به طور خودکار فرض میکنند که این گزینه مد نظر بوده است. از گزینه --no-changed-paths برای متوقف کردن ذخیره این دادهها استفاده کنید. گزینه --changed-paths به صورت ضمنی با پیکربندی commitGraph.changedPaths=true فعال میشود.
با گزینه --max-new-filters=<n>، حداکثر n فیلتر بلوم جدید تولید میکند (در صورتی که --changed-paths مشخص شده باشد). اگر n برابر با -1 باشد، هیچ محدودیتی اعمال نمیشود. فقط کامیتهای موجود در لایه جدید در این محدودیت شمرده میشوند. برای محاسبه ماسبق فیلترهای بلوم روی لایههای پیشین، توصیه میشود از --split=replace استفاده شود. بر پیکربندی commitGraph.maxNewFilters اولویت دارد.
با گزینه --split[=<strategy>]، فایل commit-graph را به صورت زنجیرهای از چندین فایل commit-graph ذخیرهشده در <dir>/info/commit-graphs مینویسد. لایههای commit-graph بر اساس راهبرد و سایر گزینههای تفکیک با یکدیگر ادغام میشوند. کامیتهای جدیدی که از قبل در commit-graph نیستند در یک فایل نوک (tip) جدید اضافه میشوند. این فایل در صورت برقراری شرایط ادغام زیر با فایل موجود ادغام میشود:
در نهایت، اگر --expire-time=<datetime> مشخص نشده باشد، فرض کنید datetime زمان فعلی باشد. پس از نوشتن گراف کامیت تفکیکشده (split commit-graph)، تمامی commit-graphهای استفادهنشدهای که زمان تغییر آنها قدیمیتر از datetime است را حذف میکند.
verify
با گزینه --shallow، تنها فایل commit-graph نوک (tip) را در زنجیرهای از commit-graphهای تفکیکشده بررسی میکند.
مثالها (EXAMPLES)
$ git commit-graph write
$ echo <pack-index> | git commit-graph write --stdin-packs
$ git show-ref -s | git commit-graph write --stdin-commits
$ git rev-parse HEAD | git commit-graph write --stdin-commits --append
هشدارها (CAVEATS)
وجود اشیای جایگزین (replace objects) یا پیوندهای کامیت (commit grafts) خواندن از یا نوشتن در commit-graph را غیرفعال میکند. به git-replace(1) مراجعه کنید.
پیکربندی (CONFIGURATION)
تمام موارد زیر این خط در این بخش به طور گزینشی از مستندات git-config(1) گنجانده شدهاند. محتوا همان چیزی است که در آنجا یافت میشود:
commitGraph.generationVersion
commitGraph.maxNewFilters
commitGraph.changedPaths
commitGraph.readChangedPaths
commitGraph.changedPathsVersion
پیشفرض -1 است.
اگر -1 باشد، گیت از نسخه فیلترهای بلوم مسیرهای تغییریافته در مخزن استفاده میکند و در صورت نبود هیچ فیلتری، پیشفرض را 1 در نظر میگیرد.
اگر 0 باشد، گیت هیچ فیلتر بلومی را نمیخواند، و هنگام دستور برای نوشتن، فیلترهای بلوم نسخه 1 را مینویسد.
اگر 1 باشد، گیت فقط فیلترهای بلوم نسخه 1 را میخواند و فیلترهای بلوم نسخه 1 را مینویسد.
اگر 2 باشد، گیت فقط فیلترهای بلوم نسخه 2 را میخواند و فیلترهای بلوم نسخه 2 را مینویسد.
برای اطلاعات بیشتر به git-commit-graph(1) مراجعه کنید.
قالب فایل (FILE FORMAT)
به gitformat-commit-graph(5) مراجعه کنید.
همچنین ببینید (SEE ALSO)
گیت (GIT)
بخشی از مجموعه git(1)
| 2026-06-29 | Git 2.55.0 |