'\" t
.\" Title: git-checkout-index
.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 2026-06-29
.\" Manual: Git Manual
.\" Source: Git 2.55.0
.\" Language: Persian
.\"
.TH "GIT\-CHECKOUT\-INDEX" "1" "2026\-06\-29" "Git 2\&.55\&.0" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "نام (NAME)"
git-checkout-index \- کپی فایلها از ایندکس به درخت کاری
.SH "خلاصه دستور (SYNOPSIS)"
.sp
.nf
\fIgit checkout\-index\fR [\-u] [\-q] [\-a] [\-f] [\-n] [\-\-prefix=]
[\-\-stage=|all]
[\-\-temp]
[\-\-ignore\-skip\-worktree\-bits]
[\-z] [\-\-stdin]
[\-\-] [\&...]
.fi
.sp
.SH "توضیحات (DESCRIPTION)"
.sp
تمام فایلهای فهرستشده را از ایندکس به دایرکتوری کاری کپی میکند (فایلهای موجود بازنویسی نمیشوند)\&.
.SH "گزینهها (OPTIONS)"
.PP
\-u, \-\-index
.RS 4
اطلاعات stat را برای مدخلهای استخراجشده در فایل ایندکس بهروزرسانی میکند\&.
.RE
.PP
\-q, \-\-quiet
.RS 4
در صورتی که فایلها از قبل وجود داشته باشند یا در ایندکس نباشند، پیامی نمایش داده نمیشود (حالت بیصدا)\&.
.RE
.PP
\-f, \-\-force
.RS 4
بازنویسی فایلهای موجود را اجبار میکند\&.
.RE
.PP
\-a, \-\-all
.RS 4
تمام فایلهای موجود در ایندکس را استخراج میکند، به جز فایلهایی که بیت skip\-worktree برای آنها فعال است (ببینید:
\fB\-\-ignore\-skip\-worktree\-bits\fR)\&. نمیتوان از این گزینه همراه با نام فایلهای مشخص استفاده کرد\&.
.RE
.PP
\-n, \-\-no\-create
.RS 4
فایلهای جدید را استخراج نمیکند، فقط فایلهایی را که قبلاً استخراج شدهاند تازهسازی میکند\&.
.RE
.PP
\-\-prefix=
.RS 4
هنگام ایجاد فایلها، را به ابتدای نام آنها اضافه میکند (معمولاً یک دایرکتوری شامل یک / در انتها)\&.
.RE
.PP
\-\-stage=|all
.RS 4
به جای استخراج مدخلهای ادغامنشده، فایلها را از مرحله (stage) مشخصشده کپی میکند\&. مقدار باید بین ۱ تا ۳ باشد\&. نکته: گزینه \-\-stage=all به طور خودکار شامل \-\-temp نیز میشود\&.
.RE
.PP
\-\-temp
.RS 4
به جای کپی کردن فایلها در دایرکتوری کاری، محتوا را در فایلهای موقت مینویسد\&. نگاشت نام فایلهای موقت به مسیرهای اصلی در stdout نوشته خواهد شد\&.
.RE
.PP
\-\-ignore\-skip\-worktree\-bits
.RS 4
تمام فایلها را استخراج میکند، از جمله فایلهایی که بیت skip\-worktree برای آنها فعال است\&.
.RE
.PP
\-\-stdin
.RS 4
به جای دریافت فهرستی از مسیرها از خط فرمان، فهرست مسیرها را از ورودی استاندارد میخواند\&. مسیرها بهطور پیشفرض با نویسه LF (یعنی یک مسیر در هر خط) از هم جدا میشوند\&.
.RE
.PP
\-z
.RS 4
تنها با
\fB\-\-stdin\fR
معنی دارد؛ مسیرها به جای LF با نویسه NUL از هم جدا میشوند\&.
.RE
.PP
\-\-
.RS 4
هیچیک از آرگومانهای بعدی را به عنوان گزینه تفسیر نمیکند\&.
.RE
.sp
ترتیب فلگها در گذشته اهمیت داشت، اما اکنون دیگر تفاوتی ندارد\&.
.sp
اجرای خالی \fBgit\fR \fBcheckout\-index\fR هیچ کاری انجام نمیدهد\&. احتمالاً منظور شما \fBgit\fR \fBcheckout\-index\fR \fB\-a\fR بوده است\&. و اگر میخواهید بازنویسی را اجبار کنید، باید از \fBgit\fR \fBcheckout\-index\fR \fB\-f\fR \fB\-a\fR استفاده کنید\&.
.sp
شهودی بودن هدف این دستور نیست؛ تکرارپذیری هدف آن است\&. دلیل رفتار «نبود آرگومان یعنی هیچ کاری انجام نشود» این است که در اسکریپتها بتوانید چنین کارهایی انجام دهید:
.sp
.if n \{\
.RS 4
.\}
.nf
$ find \&. \-name \*(Aq*\&.h\*(Aq \-print0 | xargs \-0 git checkout\-index \-f \-\-
.fi
.if n \{\
.RE
.\}
.sp
.sp
این دستور تمام فایلهای موجود \fB*\&.h\fR را با نسخههای کششده آنها جایگزین میکند\&. اگر یک خط فرمان خالی به معنی «همه» میبود، در این صورت همهچیز در ایندکس به اجبار تازهسازی میشد که هدف این نبود\&. اما از آنجا که \fIgit checkout\-index\fR گزینه \-\-stdin را میپذیرد، استفاده از روش زیر سریعتر خواهد بود:
.sp
.if n \{\
.RS 4
.\}
.nf
$ find \&. \-name \*(Aq*\&.h\*(Aq \-print0 | git checkout\-index \-f \-z \-\-stdin
.fi
.if n \{\
.RE
.\}
.sp
.sp
استفاده از \fB\-\-\fR زمانی که میدانید باقی آرگومانها نام فایل هستند، ایده بسیار خوبی است؛ این کار از بروز مشکل با نام فایلهایی نظیر \fB\-a\fR جلوگیری میکند\&. استفاده از \fB\-\-\fR در اسکریپتها یک شیوه مناسب و پیشنهادی است\&.
.SH "استفاده از \-\-TEMP یا \-\-STAGE=ALL (USING \-\-TEMP OR \-\-STAGE=ALL)"
.sp
هنگامی که \fB\-\-temp\fR استفاده شود (یا با \fB\-\-stage=all\fR بهطور ضمنی اعمال گردد)، دستور \fIgit checkout\-index\fR برای هر مدخل ایندکس که استخراج میشود یک فایل موقت ایجاد میکند\&. ایندکس با اطلاعات stat بهروزرسانی نخواهد شد\&. این گزینهها زمانی کاربرد دارند که فراخواننده به تمام مراحل (stages) همه مدخلهای ادغامنشده نیاز داشته باشد تا فایلهای ادغامنشده توسط یک ابزار ادغام خارجی پردازش شوند\&.
.sp
فهرستی در stdout نوشته خواهد شد که ارتباط میان نام فایلهای موقت و مسیرهای ردگیریشده را ارائه میدهد\&. قالب این فهرست دارای دو حالت است:
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 1." 4.2
.\}
tempname TAB path RS
.sp
قالب نخست زمانی استفاده میشود که
\fB\-\-stage\fR
مشخص نشده باشد یا برابر با
\fB\-\-stage=all\fR
نباشد\&. فیلد tempname نام فایل موقتی است که محتوای فایل را در بر دارد و path مسیر ردگیریشده در ایندکس است\&. تنها مدخلهای درخواستشده در خروجی درج میشوند\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 2." 4.2
.\}
stage1temp SP stage2temp SP stage3tmp TAB path RS
.sp
قالب دوم زمانی استفاده میشود که
\fB\-\-stage=all\fR
باشد\&. سه فیلد موقت مراحل (stage1temp, stage2temp, stage3temp) نام فایل موقت را در صورت وجود مدخل مرحله در ایندکس یا علامت \&. را در صورت عدم وجود مدخل مرحله درج میکنند\&. مسیرهایی که تنها مدخل مرحله 0 دارند همیشه از خروجی حذف میشوند\&.
.RE
.sp
در هر دو قالب، RS (جداکننده رکورد) بهطور پیشفرض خط جدید (newline) است اما اگر \-z در خط فرمان داده شده باشد، بایت null خواهد بود\&. نام فایلهای موقت همیشه رشتههای امن هستند؛ هرگز شامل جداکنندههای دایرکتوری یا کاراکترهای فاصله نخواهند بود\&. فیلد path همیشه نسبت به دایرکتوری جاری و نام فایلهای موقت همیشه نسبت به دایرکتوری ریشه سطح بالا (top level) است\&.
.sp
اگر شیئی که در یک فایل موقت کپی میشود یک پیوند نمادین (symlink) باشد، محتوای پیوند در یک فایل معمولی نوشته میشود\&. استفاده از این اطلاعات به عهده کاربر نهایی یا دستور سطح بالا (پورسلین) است\&.
.SH "مثالها (EXAMPLES)"
.PP
بهروزرسانی و تازهسازی فقط فایلهایی که از قبل استخراج شدهاند
.RS 4
.sp
.if n \{\
.RS 4
.\}
.nf
$ git checkout\-index \-n \-f \-a && git update\-index \-\-ignore\-missing \-\-refresh
.fi
.if n \{\
.RE
.\}
.sp
.RE
.PP
استفاده از \fIgit checkout\-index\fR برای «برونبری یک درخت کامل»
.RS 4
قابلیت پیشوند (prefix) استفاده از
\fIgit checkout\-index\fR
را به عنوان یک تابع «برونبری به صورت درخت» بسیار ساده میکند\&. کافی است درخت مورد نظر را در ایندکس بخوانید و دستور زیر را اجرا کنید:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git checkout\-index \-\-prefix=git\-export\-dir/ \-a
.fi
.if n \{\
.RE
.\}
.sp
دستور
\fBgit\fR
\fBcheckout\-index\fR
ایندکس را در دایرکتوری مشخصشده «برونبری» میکند\&.
.sp
علامت "/" پایانی اهمیت دارد\&. نام فایلهای برونبریشده دقیقاً با رشته تعیینشده پیشوندگذاری میشوند\&. این مورد را با مثال بعدی مقایسه کنید\&.
.RE
.PP
برونبری فایلها با یک پیشوند
.RS 4
.sp
.if n \{\
.RS 4
.\}
.nf
$ git checkout\-index \-\-prefix=\&.merged\- Makefile
.fi
.if n \{\
.RE
.\}
.sp
این دستور نسخه ذخیرهشده جاری از
\fBMakefile\fR
را در فایل
\fB\&.merged\-Makefile\fR
استخراج میکند\&.
.RE
.SH "همچنین ببینید (SEE ALSO)"
.sp
\fBgit-update-index\fR(1), \fBgit-read-tree\fR(1), \fBgit\fR(1)
.SH "گیت (GIT)"
.sp
بخشی از مجموعه \fBgit\fR(1)