GIT-LFS-CHECKOUT(1)   GIT-LFS-CHECKOUT(1)

git-lfs-checkout - به‌روزرسانی نسخه کاری با محتوای فایل‌ها در صورت موجود بودن

git lfs checkout [<glob-pattern>...]
git lfs checkout --to <file> {--base|--ours|--theirs} <conflict-obj-path>

تلاش می‌کند تا اطمینان حاصل کند که رونوشت کاری (working copy) حاوی محتوای فایل‌های اشیاء Git LFS برای ارجاع (ref) جاری است، در صورتی که داده‌های شیء در دسترس باشند. این دستور هیچ محتوایی را دانلود نمی‌کند؛ برای این منظور به git-lfs-fetch(1) مراجعه کنید.

دستور Checkout ارجاع جاری را برای تمام اشیاء LFS مورد نیاز بررسی می‌کند؛ سپس در جاهایی که یک فایل در نسخه کاری وجود ندارد یا شامل محتوای اشاره‌گر موقت با همان شناسه SHA است، در صورتی که شیء در مخزن محلی موجود باشد محتوای واقعی فایل نوشته می‌شود. فایل‌های تغییریافته هرگز بازنویسی نخواهند شد.

می‌توان یک یا چند آرگومان <glob-pattern> را برای محدود کردن مجموعه فایل‌هایی که به‌روزرسانی می‌شوند مشخص کرد. الگوهای گلوب مطابق با ساختار شرح‌داده‌شده در gitignore(5) تطبیق داده می‌شوند.

هنگامی که همراه با --to استفاده شود و درخت کاری به دلیل ادغام در وضعیت تداخل باشد، این گزینه یکی از سه مرحله شیء دارای تداخل Git LFS را در یک فایل جداگانه (که می‌تواند خارج از درخت کاری باشد) استخراج می‌کند. این ویژگی استفاده از ابزارهای diff را برای بررسی و حل تداخل ادغام‌ها آسان‌تر می‌سازد. مسیر فایل یک شیء منفرد Git LFS باید در <conflict-obj-path> ارائه شود. اگر <file> از قبل وجود داشته باشد (چه به صورت فایل معمولی، پیوند نمادین، یا دایرکتوری)، حذف و جایگزین خواهد شد، مگر اینکه یک پوشه غیرخالی باشد یا امکان حذف آن وجود نداشته باشد.

اگر نسخه گیت نصب‌شده حداقل 2.42.0 باشد، این دستور به‌طور پیش‌فرض اشیاء Git LFS را برای فایل‌ها فقط در صورتی استخراج می‌کند که در ایندکس گیت حضور داشته باشند و با صفت فیلتر Git LFS از فایل .gitattributes موجود در ایندکس یا درخت کاری فعلی مطابقت داشته باشند (یا طبق معمول، اگر با یک صفت فیلتر Git LFS در یک فایل محلی gitattributes مانند $GIT_DIR/info/attributes تطابق داشته باشند). این محدودیت‌ها در نسخه‌های پیشین گیت اعمال نمی‌شوند.

بنابراین در مخزنی با شبیه‌سازی جزئی یا checkout تنک (sparse)، در صورت نصب بودن Git نسخه 2.42.0 یا جدیدتر، توصیه می‌شود پیش از استفاده از این دستور، تمامی فایل‌های .gitattributes را از HEAD دریافت و استخراج کنید. از طرف دیگر، متغیر محیطی GIT_ATTR_SOURCE می‌تواند بر روی HEAD تنظیم شود که موجب می‌شود گیت مشخصه‌ها را منحصراً از فایل‌های .gitattributes در HEAD بخواند و موارد موجود در ایندکس یا درخت کاری را نادیده بگیرد.

در یک مخزن خام (bare)، این دستور هیچ اثری ندارد. در نسخه‌های آینده، ممکن است این دستور در صورت اجرا در یک مخزن bare با خطا خارج شود.

--base

پایه ادغام (merge base) فایل مشخص‌شده را استخراج می‌کند.

--ours

سمت ما (مربوط به شاخه جاری) از تداخل را برای فایل مشخص‌شده استخراج می‌کند.

--theirs

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

--to <path>

اگر درخت کاری در وضعیت تداخل باشد، بخشی از تداخل را که توسط --base، --ours یا --theirs مشخص شده است در مسیر داده‌شده استخراج می‌کند.

•استخراج تمامی فایل‌های مفقود یا دارای اشاره‌گر موقت:
$ git lfs checkout
•استخراج چند فایل مشخص:
$ git lfs checkout path/to/file1.png path/to.file2.png
•استخراج مسیر دارای تداخل ادغام در فایل‌های مجزا:
# تلاش برای ادغام با شاخه‌ای که تداخل ادغام دارد
$ git merge conflicting-branch
CONFLICT (content): Merge conflict in path/to/conflicting/file.dat
# استخراج نسخه‌های فایل متداخل در فایل‌های موقت
$ git lfs checkout --to ours.dat --ours path/to/conflicting/file.dat
$ git lfs checkout --to theirs.dat --theirs path/to/conflicting/file.dat
# مقایسه نسخه‌های متداخل در ours.dat و theirs.dat،
# سپس حل تداخل (مثلاً با انتخاب یک نسخه یا ساخت نسخه جدید)
# پاک‌سازی و ادامه ادغام
$ rm ours.dat theirs.dat
$ git add path/to/conflicting/file.dat
$ git merge --continue

git-lfs-fetch(1), git-lfs-pull(1), gitattributes(5), gitignore(5).

بخشی از مجموعه ابزارهای git-lfs(1).