| GIT-FSCK(1) | Git Manual | GIT-FSCK(1) |
نام (NAME)
git-fsck - بررسی پیوستگی و اعتبارسنجی اشیاء در پایگاهداده
خلاصه دستور (SYNOPSIS)
git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]
[--[no-]full] [--strict] [--verbose] [--lost-found]
[--[no-]dangling] [--[no-]progress] [--connectivity-only]
[--[no-]name-objects] [--[no-]references] [<object>...]
توضیحات (DESCRIPTION)
پیوستگی و اعتبار اشیاء موجود در پایگاهداده را بررسی و اعتبارسنجی میکند.
گزینهها (OPTIONS)
<object>
اگر هیچ شیئی داده نشود، git fsck بهطور پیشفرض از فایل نمایه (index)، تمام ارجاعات SHA-1 در فضای نام refs و تمام لاگهای ارجاع (reflogs - مگر اینکه --no-reflogs مشخص شده باشد) به عنوان سرها استفاده میکند.
--unreachable
--dangling, --no-dangling
--root
--tags
--cache
--no-reflogs
--full
--connectivity-only
تگها، ثبتها و درختهای غیرقابل دسترس نیز بررسی میشوند تا نوک بخشهای معلق تاریخچه پیدا شود. اگر به این خروجی اهمیتی نمیدهید و میخواهید سرعت را بیشتر افزایش دهید، از --no-dangling استفاده کنید.
--strict
--verbose
--lost-found
--name-objects
--progress, --no-progress
--references, --no-references
پیکربندی (CONFIGURATION)
تمام موارد زیر در این بخش بهصورت گزینشی از مستندات git-config(1) درج شدهاند. محتوا همان چیزی است که در آنجا یافت میشود:
fsck.<msg-id>
تنظیم fsck.<msg-id> توسط git-fsck(1) دریافت خواهد شد، اما برای پذیرش pushهای چنین دادههایی باید receive.fsck.<msg-id> را تنظیم کنید، یا برای clone یا fetch کردن آنها fetch.fsck.<msg-id> را تنظیم نمایید.
ادامه مستندات برای اختصار به fsck.* اشاره میکند، اما همین موضوع در مورد متغیرهای متناظر receive.fsck.* و fetch.fsck.* نیز صدق میکند.
برخلاف متغیرهایی مانند color.ui و core.editor، متغیرهای receive.fsck.<msg-id> و fetch.fsck.<msg-id> در صورت تنظیم نشدن، به پیکربندی fsck.<msg-id> رجوع نمیکنند. برای پیکربندی یکنواخت تنظیمات یکسان fsck در شرایط مختلف، هر سه متغیر باید روی مقادیر یکسانی تنظیم شوند.
هنگامی که fsck.<msg-id> تنظیم شود، میتوان با پیکربندی تنظیم fsck.<msg-id> خطاها را به هشدار و بالعکس تغییر داد که در آن <msg-id> شناسه پیام fsck است و مقدار یکی از گزینههای error، warn یا ignore است. برای راحتی کار، fsck پیشوند خطا/هشدار را با شناسه پیام قرار میدهد؛ برای مثال "missingEmail: invalid author/committer line - missing email" بدین معنی است که تنظیم fsck.missingEmail = ignore آن مشکل را نادیده خواهد گرفت.
بهطور کلی، بهتر است اشیاء مسئلهدار موجود را با fsck.skipList شمارش و مشخص کنید، به جای اینکه نوع خرابی مشترک این اشیاء را برای نادیده گرفته شدن فهرست کنید؛ زیرا دومی باعث میشود موارد جدیدی از همان خرابیها نادیده باقی بمانند.
تنظیم یک مقدار ناشناخته برای fsck.<msg-id> باعث متوقف شدن fsck میشود، اما انجام همین کار برای receive.fsck.<msg-id> و fetch.fsck.<msg-id> تنها باعث هشدار گیت خواهد شد.
برای مقادیر پشتیبانیشده <msg-id> به بخش Fsck Messages در git-fsck(1) مراجعه کنید.
fsck.skipList
این ویژگی زمانی مفید است که یک پروژه قدیمی باید علیرغم وجود ثبتهای اولیه حاوی خطاهایی که با اطمینان میتوان نادیده گرفت (مانند آدرس ایمیل نامعتبر ثبتکننده)، پذیرفته شود. نکته: اشیاء معیوب و خراب را نمیتوان با این تنظیم نادیده گرفت.
مانند fsck.<msg-id>، این متغیر نیز دارای معادلهای receive.fsck.skipList و fetch.fsck.skipList است.
برخلاف متغیرهایی مانند color.ui و core.editor، متغیرهای receive.fsck.skipList و fetch.fsck.skipList در صورت تنظیم نشدن، به پیکربندی fsck.skipList رجوع نخواهند کرد. برای پیکربندی یکنواخت تنظیمات fsck در شرایط مختلف، هر سه باید روی مقادیر یکسان تنظیم شوند.
نسخههای قدیمیتر گیت (قبل از ۲.۲۰) ذکر کرده بودند که فهرست نام اشیاء باید مرتب شده باشد. این هرگز یک الزام نبود؛ نام اشیاء میتوانستند به هر ترتیبی ظاهر شوند، اما هنگام خواندن فهرست ما مرتب بودن آن را برای پیادهسازی جستجوی دودویی داخلی پیگیری میکردیم که با فهرست از پیش مرتبشده مقداری کار را ذخیره میکرد. مگر اینکه فهرست بسیار عظیمی داشتید، دلیلی برای مرتبسازی اولیه فهرست وجود نداشت. پس از نسخه ۲.۲۰ گیت به جای آن از یک پیادهسازی درهمسازی (هش) استفاده میشود، بنابراین اکنون دلیلی برای پیشمرتبسازی فهرست وجود ندارد.
بحث و بررسی (DISCUSSION)
دستور git-fsck سلامت SHA-1 و صحت کلی اشیاء را میسنجد و رهگیری کامل دسترسیپذیری حاصله و سایر موارد را انجام میدهد. هرگونه خرابی یافتشده (اشیاء مفقود یا نامعتبر) را چاپ میکند، و اگر از پرچم --unreachable استفاده کنید اشیائی را که وجود دارند اما از هیچیک از گرههای سر مشخصشده (یا مجموعه پیشفرض، همانطور که در بالا ذکر شد) در دسترس نیستند نیز چاپ خواهد کرد.
هر شیء معیوب را باید در نسخه پشتیبان یا سایر آرشیوها پیدا کنید (یعنی میتوانید آنها را حذف کرده و یک rsync با سایتی دیگر انجام دهید به این امید که دیگران شیئی را که شما خراب کردهاید داشته باشند).
اگر core.commitGraph برابر با true باشد، فایل commit-graph نیز با استفاده از git commit-graph verify بررسی خواهد شد. به git-commit-graph(1) مراجعه کنید.
پیامهای تشخیصی استخراجشده (EXTRACTED DIAGNOSTICS)
unreachable <type> <object>
missing <type> <object>
dangling <type> <object>
hash mismatch <object>
پیامهای FSCK (FSCK MESSAGES)
فهرست زیر انواع خطاهایی را که git fsck تشخیص میدهد و معنای هر خطا را به همراه شدت پیشفرض آنها نشان میدهد. شدت خطاها، به جز مواردی که با "(FATAL)" علامتگذاری شدهاند، با تنظیم متغیر پیکربندی متناظر fsck.<msg-id> قابل تغییر است.
badDate
badDateOverflow
badEmail
badFilemode
badGpgsig
badHeadTarget
badHeaderContinuation
badName
badObjectSha1
badPackedRefEntry
badPackedRefHeader
badParentSha1
badRefContent
badRefFiletype
badRefName
badRefOid
badReferentName
badReftableTableName
badTagName
badTimezone
badTree
badTreeSha1
badType
duplicateEntries
emptyName
emptyPackedRefsFile
extraHeaderEntry
fullPathname
gitattributesBlob
gitattributesLarge
gitattributesLineLength
gitattributesMissing
gitattributesSymlink
gitignoreSymlink
gitmodulesBlob
gitmodulesLarge
gitmodulesMissing
gitmodulesName
gitmodulesParse
gitmodulesPath
gitmodulesSymlink
gitmodulesUpdate
gitmodulesUrl
hasDot
hasDotdot
hasDotgit
largePathname
mailmapSymlink
missingAuthor
missingCommitter
missingEmail
missingNameBeforeEmail
missingObject
missingSpaceBeforeDate
missingSpaceBeforeEmail
missingTag
missingTagEntry
missingTaggerEntry
missingTree
missingType
missingTypeEntry
multipleAuthors
nulInCommit
nulInHeader
nullSha1
packedRefEntryNotTerminated
packedRefUnsorted
refMissingNewline
symlinkRef
symrefTargetIsNotARef
trailingRefContent
treeNotSorted
unknownType
unterminatedHeader
zeroPaddedDate
zeroPaddedFilemode
متغیرهای محیطی (ENVIRONMENT VARIABLES)
GIT_OBJECT_DIRECTORY
GIT_INDEX_FILE
GIT_ALTERNATE_OBJECT_DIRECTORIES
گیت (GIT)
بخشی از مجموعه git(1)
نکات (NOTES)
- 1.
- git@vger.kernel.org
| 2026-06-29 | Git 2.55.0 |