'\" t .\" Title: gitignore .\" 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: English .\" .TH "GITIGNORE" "5" "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)" gitignore \- مشخص کردن فایل‌های ردیابی‌نشده برای نادیده گرفتن توسط گیت .SH "خلاصه دستور (SYNOPSIS)" .sp $XDG_CONFIG_HOME/git/ignore, $GIT_COMMON_DIR/info/exclude, \&.gitignore .SH "توضیحات (DESCRIPTION)" .sp یک فایل \fBgitignore\fR فایل‌های عامدانه ردیابی‌نشده‌ای را مشخص می‌کند که گیت باید آن‌ها را نادیده بگیرد\&. فایل‌هایی که از قبل توسط گیت ردیابی می‌شوند تحت تاثیر قرار نمی‌گیرند؛ برای جزئیات به بخش نکات (NOTES) در ادامه مراجعه کنید\&. .sp هر سطر در یک فایل \fBgitignore\fR یک الگو را مشخص می‌کند\&. هنگام تصمیم‌گیری درباره نادیده گرفتن یک مسیر، گیت معمولاً الگوهای \fBgitignore\fR را از چندین منبع بررسی می‌کند که ترتیب اولویت آن‌ها از بالاترین به پایین‌ترین به شرح زیر است (در یک سطح اولویت یکسان، آخرین الگوی منطبق نتیجه را تعیین می‌کند): .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} الگوهای خوانده‌شده از خط فرمان برای دستوراتی که از آن‌ها پشتیبانی می‌کنند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} الگوهای خوانده‌شده از یک فایل \fB\&.gitignore\fR در همان دایرکتوری مسیر، یا در هر دایرکتوری والد (تا بالاترین سطح درخت کاری)، به طوری که الگوهای موجود در فایل‌های سطوح بالاتر توسط الگوهای موجود در فایل‌های سطوح پایین‌تر تا دایرکتوری حاوی فایل بازنویسی می‌شوند\&. این الگوها نسبت به مکان فایل \fB\&.gitignore\fR مطابقت داده می‌شوند\&. یک پروژه معمولاً چنین فایل‌های \fB\&.gitignore\fR را در مخزن خود قرار می‌دهد که حاوی الگوهایی برای فایل‌های تولیدشده به عنوان بخشی از ساخت پروژه است\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} الگوهای خوانده‌شده از \fB$GIT_COMMON_DIR/info/exclude\fR\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} الگوهای خوانده‌شده از فایل مشخص‌شده توسط متغیر پیکربندی \fBcore\&.excludesFile\fR\&. .RE .sp اینکه یک الگو در کدام فایل قرار گیرد بستگی به نحوه استفاده از آن الگو دارد\&. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} الگوهایی که باید نسخه‌بندی شوند و از طریق کلون به سایر مخازن توزیع گردند (یعنی فایل‌هایی که همه توسعه‌دهندگان می‌خواهند نادیده گرفته شوند) باید در یک فایل \fB\&.gitignore\fR قرار گیرند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} الگوهایی که مختص یک مخزن خاص هستند اما نیازی به اشتراک‌گذاری با سایر مخازن مرتبط ندارند (مانند فایل‌های کمکی که در داخل مخزن قرار دارند اما مختص گردش کار یک کاربر خاص هستند) باید در فایل \fB$GIT_COMMON_DIR/info/exclude\fR قرار گیرند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} الگوهایی که کاربر می‌خواهد گیت در همه شرایط آن‌ها را نادیده بگیرد (مانند فایل‌های پشتیبان یا موقتی تولیدشده توسط ویرایشگر متن منتخب کاربر) عموماً در فایلی قرار می‌گیرند که توسط \fBcore\&.excludesFile\fR در فایل \fB~/\&.gitconfig\fR کاربر مشخص شده است\&. مقدار پیش‌فرض آن $XDG_CONFIG_HOME/git/ignore است\&. اگر $XDG_CONFIG_HOME تنظیم نشده یا خالی باشد، به جای آن از $HOME/\&.config/git/ignore استفاده می‌شود\&. .RE .sp ابزارهای سطح پایین گیت، مانند \fIgit ls\-files\fR و \fIgit read\-tree\fR، الگوهای \fBgitignore\fR مشخص‌شده توسط گزینه‌های خط فرمان یا از فایل‌های مشخص‌شده با گزینه‌های خط فرمان را می‌خوانند\&. ابزارهای سطح بالاتر گیت، مانند \fIgit status\fR و \fIgit add\fR، از الگوهای منابع مشخص‌شده در بالا استفاده می‌کنند\&. .SH "قالب الگوها (PATTERN FORMAT)" .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} یک سطر خالی با هیچ فایلی مطابقت ندارد، بنابراین می‌تواند به عنوان جداکننده برای خوانایی بهتر عمل کند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} سطری که با # آغاز می‌شود به عنوان توضیح در نظر گرفته می‌شود\&. برای الگوهایی که با علامت هش آغاز می‌شوند، یک بک‌اسلش ("\fB\e\fR") در ابتدای آن قرار دهید\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} فاصله‌های انتهایی نادیده گرفته می‌شوند مگر اینکه با بک‌اسلش ("\fB\e\fR") نقل‌قول شده باشند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} پیشوند اختیاری "!" که الگو را نقیض (منفی) می‌کند؛ هر فایل منطبقی که توسط یک الگوی قبلی مستثنی شده بود، مجدداً شامل خواهد شد\&. اگر یک دایرکتوری والد آن فایل مستثنی شده باشد، شامل کردن مجدد یک فایل امکان‌پذیر نیست\&. گیت به دلایل عملکردی دایرکتوری‌های مستثنی‌شده را فهرست نمی‌کند، بنابراین هرگونه الگو روی فایل‌های درون آن‌ها تاثیری نخواهد داشت، صرف‌نظر از اینکه در کجا تعریف شده باشند\&. برای الگوهایی که با یک "!" واقعی آغاز می‌شوند، یک بک‌اسلش ("\fB\e\fR") در ابتدای آن قرار دهید، به عنوان مثال: "\fB\e\fR!important!\&.txt"\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} اسلش "\fB/\fR" به عنوان جداکننده دایرکتوری استفاده می‌شود\&. جداکننده‌ها ممکن است در ابتدا، وسط یا انتهای الگوی جستجوی \fB\&.gitignore\fR وجود داشته باشند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} اگر یک جداکننده در ابتدا یا وسط (یا هر دو) الگو وجود داشته باشد، آنگاه الگو نسبت به سطح دایرکتوری همان فایل \fB\&.gitignore\fR خاص سنجیده می‌شود\&. در غیر این صورت الگو ممکن است در هر سطحی زیر سطح فایل \fB\&.gitignore\fR نیز مطابقت یابد\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} الگوهای خوانده‌شده از منابع استثنا که خارج از درخت کاری هستند، مانند $GIT_COMMON_DIR/info/exclude و core\&.excludesFile، به گونه‌ای بررسی می‌شوند که گویی در ریشه درخت کاری مشخص شده‌اند؛ یعنی یک "/" آغازین در چنین الگوهایی، تطبیق را در ریشه مخزن تثبیت می‌کند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} اگر یک جداکننده در انتهای الگو وجود داشته باشد، آنگاه الگو فقط با دایرکتوری‌ها مطابقت خواهد داشت؛ در غیر این صورت الگو می‌تواند با هر دو مورد فایل‌ها و دایرکتوری‌ها مطابقت داشته باشد\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} برای مثال، الگوی \fBdoc/frotz/\fR با دایرکتوری \fBdoc/frotz\fR مطابقت دارد، اما با دایرکتوری \fBa/doc/frotz\fR مطابقت ندارد؛ با این حال \fBfrotz/\fR با \fBfrotz\fR و \fBa/frotz\fR که یک دایرکتوری باشند مطابقت دارد (تمام مسیرها نسبت به فایل \fB\&.gitignore\fR سنجیده می‌شوند)\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} یک ستاره "\fB*\fR" با هر چیزی به جز اسلش مطابقت دارد\&. نویسه "?" با هر نویسه‌ای به جز "\fB/\fR" مطابقت دارد\&. نماد بازه، مانند [\fBa\-zA\-Z\fR]، می‌تواند برای تطبیق با یکی از نویسه‌های موجود در یک بازه استفاده شود\&. برای توضیحات کامل‌تر به fnmatch(3) و پرچم FNM_PATHNAME مراجعه کنید\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} یک بک‌اسلش ("\fB\e\fR") می‌تواند برای اسکیپ کردن هر نویسه‌ای استفاده شود؛ برای نمونه، "\fB\e*\fR" با یک ستاره واقعی مطابقت دارد (و "\fB\ea\fR" با "\fBa\fR" مطابقت می‌کند، اگرچه نیازی به اسکیپ کردن در آنجا نیست)\&. همانند fnmatch(3)، بک‌اسلش در انتهای الگو یک الگوی نامعتبر محسوب می‌شود که هرگز با چیزی مطابقت نمی‌یابد\&. .RE .sp دو ستاره متوالی ("\fB**\fR") در الگوهایی که با مسیر کامل نام فایل سنجیده می‌شوند ممکن است معنای ویژه‌ای داشته باشند: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} یک "\fB**\fR" آغازین که پس از آن یک اسلش قرار دارد، به معنای مطابقت در تمام دایرکتوری‌ها است\&. برای نمونه، "\fB**/foo\fR" با فایل یا دایرکتوری "\fBfoo\fR" در هر مکانی مطابقت دارد، درست مانند الگوی "\fBfoo\fR"\&. الگوی "\fB**/foo/bar\fR" با فایل یا دایرکتوری "\fBbar\fR" در هر کجایی که مستقیماً زیر دایرکتوری "\fBfoo\fR" باشد مطابقت می‌کند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} یک "\fB/**\fR" انتهایی با همه محتویات درون آن مطابقت دارد\&. برای نمونه، "\fBabc/**\fR" با تمام فایل‌های داخل دایرکتوری "\fBabc\fR"، نسبت به مکان فایل \fB\&.gitignore\fR، با عمق نامحدود مطابقت دارد\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} یک اسلش و به دنبال آن دو ستاره متوالی و سپس یک اسلش، با صفر یا چند دایرکتوری مطابقت دارد\&. برای نمونه، "\fBa/**/b\fR" با "\fBa/b\fR"، "\fBa/x/b\fR"، "\fBa/x/y/b\fR" و غیره مطابقت می‌کند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} سایر ستاره‌های متوالی به عنوان ستاره‌های معمولی در نظر گرفته می‌شوند و طبق قواعد قبلی تطبیق داده خواهند شد\&. .RE .SH "پیکربندی (CONFIGURATION)" .sp متغیر پیکربندی اختیاری \fBcore\&.excludesFile\fR نشان‌دهنده مسیری به فایلی حاوی الگوهای نام فایل‌ها برای مستثنی کردن است، مشابه با \fB$GIT_COMMON_DIR/info/exclude\fR\&. الگوهای موجود در فایل exclude علاوه بر الگوهای موجود در \fB$GIT_COMMON_DIR/info/exclude\fR استفاده می‌شوند\&. .SH "نکات (NOTES)" .sp هدف از فایل‌های gitignore این است که اطمینان حاصل شود فایل‌های خاصی که توسط گیت ردیابی نمی‌شوند، همچنان ردیابی‌نشده باقی می‌مانند\&. .sp برای متوقف کردن ردیابی فایلی که در حال حاضر ردیابی می‌شود، از \fIgit rm \-\-cached\fR برای حذف فایل از ایندکس استفاده کنید\&. سپس می‌توان نام فایل را به فایل \fB\&.gitignore\fR اضافه کرد تا از ثبت مجدد فایل در کامیت‌های بعدی جلوگیری شود\&. .sp گیت هنگام دسترسی به فایل \fB\&.gitignore\fR در درخت کاری، پیوندهای نمادین را دنبال نمی‌کند\&. این امر رفتار سیستم را هنگام دسترسی به فایل از ایندکس یا درخت در مقایسه با فایل‌سیستم یکدست نگه می‌دارد\&. .SH "مثال‌ها (EXAMPLES)" .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} الگوی \fBhello\&.*\fR با هر فایل یا دایرکتوری که نام آن با \fBhello\&.\fR آغاز شود مطابقت دارد\&. اگر کسی بخواهد این تطبیق را فقط به همان دایرکتوری محدود کرده و زیردایرکتوری‌های آن را شامل نشود، می‌تواند یک اسلش به ابتدای الگو اضافه کند؛ یعنی \fB/hello\&.*\fR؛ اکنون الگو با \fBhello\&.txt\fR و \fBhello\&.c\fR مطابقت دارد اما با \fBa/hello\&.java\fR مطابقت نمی‌کند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} الگوی \fBfoo/\fR با دایرکتوری \fBfoo\fR و مسیرهای زیر آن مطابقت خواهد داشت، اما با یک فایل معمولی یا یک پیوند نمادین \fBfoo\fR مطابقت نخواهد کرد (این امر با نحوه عملکرد کلی pathspec در گیت سازگار است) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} الگوی \fBdoc/frotz\fR و \fB/doc/frotz\fR در هر فایل \fB\&.gitignore\fR اثر یکسانی دارند\&. به عبارت دیگر، اگر از قبل یک اسلش میانی در الگو وجود داشته باشد، اسلش ابتدایی تاثیری در تمایز نخواهد داشت\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} الگوی \fBfoo/*\fR، با \fBfoo/test\&.json\fR (یک فایل معمولی) و \fBfoo/bar\fR (یک دایرکتوری) مطابقت دارد، اما با \fBfoo/bar/hello\&.c\fR (یک فایل معمولی) مطابقت ندارد، زیرا ستاره در الگو با \fBbar/hello\&.c\fR که حاوی اسلش است مطابقت نمی‌کند\&. .RE .sp .if n \{\ .RS 4 .\} .nf $ git status [\&.\&.\&.] # Untracked files: [\&.\&.\&.] # Documentation/foo\&.html # Documentation/gitignore\&.html # file\&.o # lib\&.a # src/internal\&.o [\&.\&.\&.] $ cat \&.git/info/exclude # ignore objects and archives, anywhere in the tree\&. *\&.[oa] $ cat Documentation/\&.gitignore # ignore generated html files, *\&.html # except foo\&.html which is maintained by hand !foo\&.html $ git status [\&.\&.\&.] # Untracked files: [\&.\&.\&.] # Documentation/foo\&.html [\&.\&.\&.] .fi .if n \{\ .RE .\} .sp .sp مثالی دیگر: .sp .if n \{\ .RS 4 .\} .nf $ cat \&.gitignore vmlinux* $ ls arch/foo/kernel/vm* arch/foo/kernel/vmlinux\&.lds\&.S $ echo \*(Aq!/vmlinux*\*(Aq >arch/foo/kernel/\&.gitignore .fi .if n \{\ .RE .\} .sp .sp فایل \&.gitignore دوم مانع از نادیده گرفته شدن \fBarch/foo/kernel/vmlinux\&.lds\&.S\fR توسط گیت می‌شود\&. .sp مثالی برای مستثنی کردن همه‌چیز به جز یک دایرکتوری خاص \fBfoo/bar\fR (به \fB/*\fR توجه کنید \- بدون اسلش، نویسه عمومی همه‌چیز درون \fBfoo/bar\fR را نیز مستثنی می‌کرد): .sp .if n \{\ .RS 4 .\} .nf $ cat \&.gitignore # exclude everything except directory foo/bar /* !/foo /foo/* !/foo/bar .fi .if n \{\ .RE .\} .sp .SH "همچنین ببینید (SEE ALSO)" .sp \fBgit-rm\fR(1), \fBgitrepository-layout\fR(5), \fBgit-check-ignore\fR(1) .SH "گیت (GIT)" .sp بخشی از مجموعه \fBgit\fR(1)