GIT-REPAIR(1) راهنمای کاربری GIT-REPAIR(1)

git-repair - تعمیر و بازیابی یک مخزن خراب گیت

git-repair [--force]

این دستور می‌تواند یک مخزن گیت خراب یا آسیب‌دیده را تعمیر کند؛ مخزنی که git fsck تنها به گزارش دادن ایرادها و مشکلات آن بسنده می‌کند.

این ابزار این کار را با حذف تمام اشیاء آسیب‌دیده و بازیابی تمامی اشیاء گمشده تا جای ممکن از ریموت‌های (remotes) مخزن انجام می‌دهد.

اگر این اقدامات برای بازیابی کامل مخزن کافی نباشد، می‌تواند شاخه‌ها را به کامیت‌های قبل از وقوع خرابی بازنشانی کند، شاخه‌هایی را که به دلیل از دست رفتن داده‌ها دیگر در دسترس نیستند حذف کند، و هرگونه فایل مفقود را از ایندکس (index) بردارد. این کار تنها در صورتی انجام می‌شود که دستور با گزینه --force اجرا شود؛ زیرا این کار تاریخچه را بازنویسی کرده و داده‌های مفقود را دور می‌ریزد. توجه داشته باشید که گزینه --force هرگز برچسب‌ها (tags) را تغییر نمی‌دهد، حتی اگر به دلیل نبود داده‌ها دیگر قابل استفاده نباشند.

پس از اجرای این دستور، احتمالاً تمایل خواهید داشت دستور git fsck را برای بررسی و تأیید رفع ایرادهای مخزن اجرا کنید. توجه داشته باشید که در صورت عدم امکان بازیابی اشیاء ارجاع‌شده در لاگ مراجع (reflog) یا ذخیره‌گاه موقت (stash)، دستور fsck ممکن است همچنان درباره آن‌ها پیام هشدار دهد. این دستور تلاشی برای پاک‌سازی reflog یا stash نمی‌کند.

از آنجا که این دستور تمام بسته‌های (packs) موجود در مخزن را از حالت فشرده خارج می‌کند (unpack)، ممکن است بخواهید پس از اتمام کار، دستور git gc را اجرا کنید.

عملیات بازیابی تهاجمی را فعال می‌کند. در صورتی که بازیابی مخزن با روش‌های عادی امکان‌پذیر نباشد، شاخه‌ها را به کامیت‌های پیش از خرابی بازمی‌گرداند، شاخه‌های غیرقابل بازیابی را حذف می‌کند و فایل‌های مفقود را از ایندکس پاک می‌نماید. توجه داشته باشید که این گزینه تاریخچه را بازنویسی می‌کند و داده‌های گمشده را دور می‌ریزد، اما برچسب‌ها (tags) را دستکاری نمی‌کند.

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

این کار با استفاده از پارامتر --test و پارامترهای مرتبط --numtests و --retry انجام می‌پذیرد.

توجه داشته باشید که فرآیند آزمایش گاهی مخازنی را می‌یابد که تنها با استفاده از گزینه --force قابل تعمیر هستند؛ این یک رفتار مورد انتظار است. از سوی دیگر، اگر در بازیابی یک مخزن همراه با گزینه --force شکست بخورد، آزمایش یک باگ نرم‌افزاری پیدا کرده است!

git-fsck(1), git-gc(1)

Joey Hess <joey@kitenet.net>

http://git-repair.branchable.com

2026 git-repair