'\" t
.\" Title: git-rm
.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 2026-06-29
.\" Manual: راهنمای Git
.\" Source: Git 2.55.0
.\" Language: Persian
.\"
.TH "GIT\-RM" "1" "2026\-06\-29" "Git 2\&.55\&.0" "راهنمای Git"
.\" -----------------------------------------------------------------
.\" * 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-rm \- حذف فایلها از درخت کاری و ایندکس
.SH "خلاصه دستور (SYNOPSIS)"
.sp
.nf
\fBgit\fR \fBrm\fR [\fB\-f\fR | \fB\-\-force\fR] [\fB\-n\fR] [\fB\-r\fR] [\fB\-\-cached\fR] [\fB\-\-ignore\-unmatch\fR]
[\fB\-\-quiet\fR] [\fB\-\-pathspec\-from\-file=\fR\fI\fR [\fB\-\-pathspec\-file\-nul\fR]]
[\fB\-\-\fR] [\fI\fR\&...]
.fi
.sp
.SH "توضیحات (DESCRIPTION)"
.sp
فایلهای منطبق با الگوی مسیر (pathspec) را از ایندکس، یا از درخت کاری و ایندکس حذف میکند\&. دستور \fBgit\fR \fBrm\fR فایلی را صرفاً از دایرکتوری کاری شما حذف نخواهد کرد\&. (هیچ گزینهای برای حذف فایل تنها از درخت کاری و در عین حال نگه داشتن آن در ایندکس وجود ندارد؛ اگر میخواهید این کار را انجام دهید از \fB/bin/rm\fR استفاده کنید\&.) فایلهایی که حذف میشوند باید دقیقاً با نوک شاخه یکسان باشند، و هیچ بهروزرسانی در محتویات آنها نباید در ایندکس آمادهسازی شده باشد، اگرچه این رفتار پیشفرض را میتوان با گزینه \fB\-f\fR نادیده گرفت و تغییر داد\&. هنگامی که \fB\-\-cached\fR مشخص شود، محتوای آمادهسازیشده باید با نوک شاخه یا فایل روی دیسک مطابقت داشته باشد، که امکان حذف فایل را تنها از ایندکس فراهم میسازد\&. هنگامی که sparse\-checkout در حال استفاده است (به \fBgit-sparse-checkout\fR(1) مراجعه کنید)، دستور \fBgit\fR \fBrm\fR تنها مسیرهای درون الگوهای sparse\-checkout را حذف خواهد کرد\&.
.SH "گزینهها (OPTIONS)"
.PP
\fI\fR\&.\&.\&.
.RS 4
فایلهایی که باید حذف شوند\&. میتوان نام یک دایرکتوری ابتدایی را مشخص کرد (مانند
\fBdir\fR
برای حذف
\fBdir/file1\fR
و
\fBdir/file2\fR)
تا تمامی فایلهای موجود در دایرکتوری و به صورت بازگشتی تمام زیردایرکتوریها حذف شوند، اما این کار نیازمند مشخص کردن صریح گزینه
\fB\-r\fR
است\&.
.sp
این دستور تنها مسیرهایی را حذف میکند که برای گیت شناختهشده هستند\&.
.sp
تطبیق الگوهای فایلی (globbing) در مرزهای دایرکتوری نیز انجام میشود\&. بنابراین با داشتن دو دایرکتوری
\fBd\fR
و
\fBd2\fR،
تفاوتی میان استفاده از
\fBgit\fR
\fBrm\fR
\*(Aqd*\*(Aq
و
\fBgit\fR
\fBrm\fR
\*(Aqd/*\*(Aq
وجود دارد، چرا که دستور اول تمامی دایرکتوری
\fBd2\fR
را نیز حذف خواهد کرد\&.
.sp
برای جزئیات بیشتر، مدخل
\fI\fR
را در
\fBgitglossary\fR(7)
ببینید\&.
.RE
.PP
\fB\-f\fR, \fB\-\-force\fR
.RS 4
بررسی بهروز بودن فایلها را نادیده میگیرد و لغو میکند\&.
.RE
.PP
\fB\-n\fR, \fB\-\-dry\-run\fR
.RS 4
در عمل هیچ فایلی را حذف نمیکند؛ در عوض فقط نشان میدهد که آیا آنها در ایندکس وجود دارند و آیا در غیر این صورت توسط دستور حذف میشدند یا خیر\&.
.RE
.PP
\fB\-r\fR
.RS 4
در صورت مشخص شدن نام یک دایرکتوری ابتدایی، اجازه حذف بازگشتی را میدهد\&.
.RE
.PP
\fB\-\-\fR
.RS 4
از این گزینه میتوان برای جداسازی گزینههای خط فرمان از فهرست فایلها استفاده کرد (زمانی مفید است که ممکن است نام فایلها با گزینههای خط فرمان اشتباه گرفته شود)\&.
.RE
.PP
\fB\-\-cached\fR
.RS 4
از این گزینه برای خروج از حالت آمادهسازی (unstage) و حذف مسیرها تنها از ایندکس استفاده کنید\&. فایلهای درخت کاری، چه تغییر یافته باشند و چه نیافته باشند، دستنخورده باقی خواهند ماند\&.
.RE
.PP
\fB\-\-ignore\-unmatch\fR
.RS 4
حتی اگر هیچ فایلی مطابقت نداشته باشد، با وضعیت خروج صفر (موفق) خارج میشود\&.
.RE
.PP
\fB\-\-sparse\fR
.RS 4
بهروزرسانی مدخلهای ایندکس خارج از مخروط sparse\-checkout را مجاز میکند\&. به طور معمول،
\fBgit\fR
\fBrm\fR
از بهروزرسانی مدخلهای ایندکسی که مسیر آنها در مخروط sparse\-checkout قرار نمیگیرد خودداری میکند\&. برای اطلاعات بیشتر
\fBgit-sparse-checkout\fR(1)
را ببینید\&.
.RE
.PP
\fB\-q\fR, \fB\-\-quiet\fR
.RS 4
دستور
\fBgit\fR
\fBrm\fR
به طور معمول برای هر فایل حذفشده یک خط خروجی (به شکل دستور
\fBrm\fR)
تولید میکند\&. این گزینه آن خروجی را فرونشانی و مخفی میکند\&.
.RE
.PP
\fB\-\-pathspec\-from\-file=\fR\fI\fR
.RS 4
الگوی مسیر (pathspec) به جای آرگومانها از طریق
\fI\fR
ارسال میشود\&. اگر
\fI\fR
دقیقاً
\fB\-\fR
باشد، ورودی استاندارد استفاده میشود\&. عناصر pathspec با
\fILF\fR
یا
\fICR\fR/\fILF\fR
از هم جدا میشوند\&. عناصر pathspec را میتوان همانطور که برای متغیر پیکربندی
\fBcore\&.quotePath\fR
توضیح داده شده است نقلقول کرد (به
\fBgit-config\fR(1)
مراجعه کنید)\&. همچنین به
\fB\-\-pathspec\-file\-nul\fR
و گزینه سراسری
\fB\-\-literal\-pathspecs\fR
مراجعه کنید\&.
.RE
.PP
\fB\-\-pathspec\-file\-nul\fR
.RS 4
تنها همراه با
\fB\-\-pathspec\-from\-file\fR
معنادار است\&. عناصر pathspec با نویسه
\fINUL\fR
جدا میشوند و سایر نویسهها به صورت تحتاللفظی در نظر گرفته میشوند (شامل خطوط جدید و علامتهای نقلقول)\&.
.RE
.SH "حذف فایلهای پاکشده از سیستمفایل (REMOVING FILES THAT HAVE DISAPPEARED FROM THE FILESYSTEM)"
.sp
هیچ گزینهای در \fBgit\fR \fBrm\fR برای حذف تنها مسیرهایی از ایندکس که از سیستمفایل ناپدید شدهاند وجود ندارد\&. با این حال، بسته به مورد استفاده، چندین روش برای انجام این کار وجود دارد\&.
.SS "استفاده از \(lqgit commit \-a\(rq"
.sp
اگر قصد دارید کامیت بعدی شما تمام تغییرات فایلهای ردیابیشده در درخت کاری و تمام حذفهای فایلهایی که با \fBrm\fR (در مقایسه با \fBgit\fR \fBrm\fR) از درخت کاری حذف شدهاند را ثبت کند، از \fBgit\fR \fBcommit\fR \fB\-a\fR استفاده کنید، چرا که به طور خودکار تمامی حذفها را متوجه شده و ثبت میکند\&. همچنین میتوانید بدون کامیت کردن، با استفاده از \fBgit\fR \fBadd\fR \fB\-u\fR به اثری مشابه دست یابید\&.
.SS "استفاده از \(lqgit add \-A\(rq"
.sp
هنگام پذیرش یک بسته کد جدید (code drop) برای یک شاخه ارائهدهنده (vendor branch)، احتمالاً میخواهید هم حذف مسیرها و افزودن مسیرهای جدید و هم تغییرات مسیرهای موجود را ثبت کنید\&.
.sp
به طور معمول ابتدا با استفاده از این دستور، تمام فایلهای ردیابیشده را از درخت کاری حذف میکنید:
.sp
.if n \{\
.RS 4
.\}
.nf
git ls\-files \-z | xargs \-0 rm \-f
.fi
.if n \{\
.RE
.\}
.sp
.sp
و سپس کد جدید را در درخت کاری از حالت فشرده (untar) خارج میکنید\&. متناوباً میتوانید تغییرات را با \fIrsync\fR به درون درخت کاری همگامسازی کنید\&.
.sp
پس از آن، سادهترین روش برای ثبت تمام حذفها، افزودنها و تغییرات در درخت کاری عبارت است از:
.sp
.if n \{\
.RS 4
.\}
.nf
git add \-A
.fi
.if n \{\
.RE
.\}
.sp
.sp
به \fBgit-add\fR(1) مراجعه کنید\&.
.SS "روشهای دیگر (Other ways)"
.sp
اگر تمام آنچه واقعاً میخواهید انجام دهید حذف فایلهایی از ایندکس است که دیگر در درخت کاری وجود ندارند (شاید به این دلیل که درخت کاری شما تغییرات ثبتنشده دارد و نمیتوانید از \fBgit\fR \fBcommit\fR \fB\-a\fR استفاده کنید)، از دستور زیر استفاده کنید:
.sp
.if n \{\
.RS 4
.\}
.nf
git diff \-\-name\-only \-\-diff\-filter=D \-z | xargs \-0 git rm \-\-cached
.fi
.if n \{\
.RE
.\}
.sp
.SH "زیرماژولها (SUBMODULES)"
.sp
تنها زیرماژولهایی که از یک gitfile استفاده میکنند (به این معنی که با نسخه گیت 1\&.7\&.8 یا جدیدتر کلون شدهاند) از درخت کاری حذف خواهند شد، زیرا مخزن آنها در دایرکتوری \fB\&.git\fR پروژه اصلی قرار دارد\&. اگر یک زیرماژول (یا یکی از زیرماژولهای تودرتو درون آن) همچنان از یک دایرکتوری \fB\&.git\fR استفاده میکند، \fBgit\fR \fBrm\fR دایرکتوری git زیرماژول را به دایرکتوری git پروژه اصلی منتقل میکند تا تاریخچه زیرماژول حفظ شود\&. در صورت وجود، بخش \fBsubmodule\&.\fR\fI\fR در فایل \fBgitmodules\fR(5) نیز حذف خواهد شد و تغییرات آن فایل آمادهسازی (staged) میشود (مگر اینکه از \fB\-\-cached\fR یا \fB\-n\fR استفاده شود)\&.
.sp
یک زیرماژول زمانی بهروز تلقی میشود که \fBHEAD\fR آن با آنچه در ایندکس ثبت شده یکسان باشد، هیچ فایل ردیابیشدهای تغییر نیافته باشد، و هیچ فایل ردیابینشدهای که نادیده گرفته نشده باشد در درخت کاری زیرماژول وجود نداشته باشد\&. فایلهای نادیدهگرفتهشده غیرضروری تلقی میشوند و مانع از حذف درخت کاری یک زیرماژول نخواهند شد\&.
.sp
اگر فقط میخواهید نسخه محلی دریافتشده (local checkout) یک زیرماژول را بدون کامیت کردنِ حذف، از درخت کاری خود حذف کنید، در عوض از \fBgit-submodule\fR(1) \fBdeinit\fR استفاده نمایید\&. همچنین برای جزئیات مربوط به حذف زیرماژول، به \fBgitsubmodules\fR(7) مراجعه کنید\&.
.SH "مثالها (EXAMPLES)"
.PP
\fBgit\fR \fBrm\fR \fBDocumentation/\e*\&.txt\fR
.RS 4
تمامی فایلهای
\fB*\&.txt\fR
موجود در دایرکتوری
\fBDocumentation\fR
و هر یک از زیردایرکتوریهای آن را از ایندکس حذف میکند\&.
.sp
توجه داشته باشید که در این مثال علامت ستاره
\fB*\fR
از دید شل نقلقول (اسکیپ) شده است؛ این کار به گیت، و نه شل، اجازه میدهد نام مسیرهای فایلها و زیردایرکتوریهای واقع در دایرکتوری
\fBDocumentation/\fR
را گسترش دهد\&.
.RE
.PP
\fBgit\fR \fBrm\fR \fB\-f\fR \fBgit\-*\&.sh\fR
.RS 4
از آنجا که این مثال به شل اجازه میدهد علامت ستاره را بسط دهد (یعنی شما فایلها را صراحتاً فهرست میکنید)، فایل
\fBsubdir/git\-foo\&.sh\fR
را حذف نمیکند\&.
.RE
.SH "اشکالات (BUGS)"
.sp
هر بار که بهروزرسانی پروژه اصلی یک زیرماژول پرشده را حذف میکند (برای مثال هنگام جابجایی بین کامیتهای قبل و بعد از حذف)، یک نسخه کهنه از زیرماژول در مکان قبلی باقی میماند\&. حذف دایرکتوری قدیمی تنها زمانی امن است که از یک gitfile استفاده کند، چرا که در غیر این صورت تاریخچه زیرماژول نیز حذف خواهد شد\&. این مرحله با پیادهسازی بهروزرسانی بازگشتی زیرماژولها منسوخ خواهد شد\&.
.SH "همچنین ببینید (SEE ALSO)"
.sp
\fBgit-add\fR(1)
.SH "گیت (GIT)"
.sp
بخشی از مجموعه \fBgit\fR(1)