'\" t .\" Title: git-commit-tree .\" 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\-COMMIT\-TREE" "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-commit-tree \- ایجاد یک شیء کامیت جدید .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fIgit commit\-tree\fR [(\-p )\&...] \fIgit commit\-tree\fR [(\-p )\&...] [\-S[]] [(\-m )\&...] [(\-F )\&...] .fi .sp .SH "توضیحات (DESCRIPTION)" .sp این دستور معمولاً چیزی نیست که یک کاربر نهایی بخواهد مستقیماً اجرا کند\&. به جای آن \fBgit-commit\fR(1) را ببینید\&. .sp یک شیء کامیت جدید بر اساس شیء درخت ارائه‌شده ایجاد می‌کند و شناسه شیء کامیت جدید را در خروجی استاندارد صادر می‌نماید\&. پیام وقایع‌نگاری از ورودی استاندارد خوانده می‌شود، مگر اینکه گزینه‌های \fB\-m\fR یا \fB\-F\fR مشخص شده باشند\&. .sp گزینه‌های \fB\-m\fR و \fB\-F\fR می‌توانند به هر تعداد بار و با هر ترتیبی داده شوند\&. پیام وقایع‌نگاری کامیت به همان ترتیبی که گزینه‌ها مشخص شده‌اند تشکیل خواهد شد\&. .sp یک شیء کامیت ممکن است هر تعداد والد داشته باشد\&. با داشتن دقیقاً یک والد، یک کامیت معمولی است\&. داشتن بیش از یک والد، کامیت را به یک ادغام (merge) میان چندین خط تاریخچه تبدیل می‌کند\&. کامیت‌های اولیه (ریشه) هیچ والدی ندارند\&. .sp در حالی که یک درخت نمایانگر وضعیت دایرکتوری خاصی از یک دایرکتوری کاری است، یک کامیت آن وضعیت را در «زمان» نشان می‌دهد و چگونگی رسیدن به آن را توضیح می‌دهد\&. .sp معمولاً یک کامیت یک وضعیت جدید برای «HEAD» را مشخص می‌کند، و در حالی که گیت اهمیتی نمی‌دهد که یادداشت مربوط به آن وضعیت را در کجا ذخیره می‌کنید، در عمل معمولاً نتیجه را فقط در فایلی می‌نویسیم که توسط \fB\&.git/HEAD\fR به آن اشاره می‌شود، تا همیشه بتوانیم ببینیم آخرین وضعیت کامیت‌شده چه بوده است\&. .SH "گزینه‌ها (OPTIONS)" .PP .RS 4 یک شیء درخت (tree object) موجود\&. .RE .PP \-p .RS 4 هر گزینه \fB\-p\fR شناسه یک شیء کامیت والد را مشخص می‌کند\&. .RE .PP \-m .RS 4 یک بند (پاراگراف) در پیام وقایع‌نگاری کامیت\&. این گزینه می‌تواند بیش از یک بار داده شود و هر به یک بند جداگانه تبدیل می‌شود\&. .RE .PP \-F .RS 4 پیام وقایع‌نگاری کامیت را از فایل داده‌شده بخوانید\&. از \fB\-\fR برای خواندن از ورودی استاندارد استفاده کنید\&. این گزینه می‌تواند بیش از یک بار داده شود و محتوای هر فایل به بند جداگانه‌ای تبدیل می‌شود\&. .RE .PP \-S[], \-\-gpg\-sign[=], \-\-no\-gpg\-sign .RS 4 امضای کامیت‌ها با GPG\&. شناسه \fBkeyid\fR اختیاری است و به طور پیش‌فرض روی هویت کامیت‌کننده تنظیم می‌شود؛ در صورت تعیین، باید بدون فاصله به گزینه چسبانده شود\&. \fB\-\-no\-gpg\-sign\fR برای لغو گزینه \fB\-\-gpg\-sign\fR که پیش‌تر در خط فرمان داده شده، مفید است\&. .RE .SH "اطلاعات کامیت (COMMIT INFORMATION)" .sp یک کامیت موارد زیر را دربرمی‌گیرد: .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 .\} نام، رایانامه و تاریخ نویسنده (author) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} نام، رایانامه و زمان ثبت‌کننده کامیت (committer)\&. .RE .sp توضیح کامیت از ورودی استاندارد خوانده می‌شود\&. اگر ورودی گزارش تغییرات از طریق تغییر مسیر «<» ارائه نشود، دستور \fIgit commit\-tree\fR منتظر می‌ماند تا توضیحی وارد شده و با ^D خاتمه یابد\&. .SH "قالب‌های تاریخ (DATE FORMATS)" .sp متغیرهای محیطی \fBGIT_AUTHOR_DATE\fR و \fBGIT_COMMITTER_DATE\fR از قالب‌های تاریخ زیر پشتیبانی می‌کنند: .PP قالب داخلی گیت (Git internal format) .RS 4 به صورت \fI\fR \fI\fR است، که در آن \fI\fR تعداد ثانیه‌ها از مبدأ یونیکس (UNIX epoch) است\&. \fI\fR یک انحراف مثبت یا منفی از زمان هماهنگ جهانی (UTC) است\&. به عنوان مثال CET (که ۱ ساعت جلوتر از UTC است) \fB+0100\fR می‌باشد\&. .sp امن‌تر است که پیش از \fI\fR نویسه \fB@\fR قرار داده شود (مثلاً \fB@0\fR \fB+0000\fR)، که گیت را وادار می‌کند آن را به عنوان یک برچسب زمانی خام تفسیر کند\&. این کار برای مقادیر کمتر از ۱۰۰٬۰۰۰٬۰۰۰ (که کمتر از ۹ رقم دارند) الزامی است تا از اشتباه گرفته شدن با سایر قالب‌های تاریخ مانند \fBYYYYMMDD\fR جلوگیری شود\&. .RE .PP RFC 2822 .RS 4 قالب استاندارد تاریخ مطابق با توضیحات RFC 2822، برای مثال \fBThu\fR, \fB07\fR \fBApr\fR \fB2005\fR \fB22:13:13\fR \fB+0200\fR\&. .RE .PP ISO 8601 .RS 4 زمان و تاریخ مشخص‌شده توسط استاندارد ISO 8601، برای مثال \fB2005\-04\-07T22:13:13\fR\&. تجزیه‌کننده همچنین به جای کاراکتر \fBT\fR فاصله را نیز می‌پذیرد\&. بخش‌های کسری ثانیه نادیده گرفته می‌شوند، برای مثال \fB2005\-04\-07T22:13:13\&.019\fR به عنوان \fB2005\-04\-07T22:13:13\fR در نظر گرفته خواهد شد\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br علاوه بر این، بخش تاریخ در قالب‌های زیر نیز پذیرفته می‌شود: \fBYYYY\&.MM\&.DD\fR, \fBMM/DD/YYYY\fR و \fBDD\&.MM\&.YYYY\fR\&. .sp .5v .RE .RE .SH "بررسی و توضیحات تکمیلی (DISCUSSION)" .sp گیت تا حدودی نسبت به کدگذاری نویسه‌ها (character encoding) بی‌تفاوت (مستقل) است\&. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} محتوای شیءهای blob دنباله‌هایی از بایت‌ها هستند که تفسیر نمی‌شوند\&. هیچ تبدیل کدگذاری در سطح هسته وجود ندارد\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} نام‌های مسیر با قالب تصحیح شکل C یونیکد (UTF\-8 normalization form C) کدگذاری می‌شوند\&. این امر برای شیءهای درخت، فایل ایندکس، نام‌های ارجاع، و همچنین نام‌های مسیر در آرگومان‌های خط فرمان، متغیرهای محیطی و فایل‌های پیکربندی (\fB\&.git/config\fR (ببینید \fBgit-config\fR(1))، \fBgitignore\fR(5)، \fBgitattributes\fR(5) و \fBgitmodules\fR(5)) اعمال می‌شود\&. .sp توجه داشته باشید که گیت در سطح هسته با نام‌های مسیر صرفاً به عنوان دنباله‌ای از بایت‌های غیر NUL رفتار می‌کند و هیچ تبدیل کدگذاری برای نام مسیرها وجود ندارد (به جز در مک و ویندوز)\&. بنابراین، استفاده از نام‌های مسیر غیر ASCII حتی در پلتفرم‌ها و سیستم‌های فایلی که از کدگذاری‌های قدیمی ASCII گسترش‌یافته استفاده می‌کنند نیز اکثراً کار خواهد کرد\&. با این حال، مخازن ایجادشده در چنین سیستم‌هایی روی سیستم‌های مبتنی بر UTF\-8 (مانند لینوکس، مک، ویندوز) به درستی کار نخواهند کرد و برعکس\&. علاوه بر این، بسیاری از ابزارهای مبتنی بر گیت صرفاً فرض می‌کنند که نام‌های مسیر UTF\-8 هستند و در نمایش صحیح سایر کدگذاری‌ها ناموفق خواهند بود\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} پیام‌های وقایع‌نگاری کامیت معمولاً با UTF\-8 کدگذاری می‌شوند، اما سایر کدگذاری‌های ASCII گسترش‌یافته نیز پشتیبانی می‌شوند\&. این شامل ISO\-8859\-x، CP125x و بسیاری موارد دیگر است، اما \fIنه\fR UTF\-16/32، EBCDIC و کدگذاری‌های چندبایتی CJK (مانند GBK، Shift\-JIS، Big5، EUC\-x، CP9xx و غیره)\&. .RE .sp اگرچه توصیه می‌کنیم که پیام‌های وقایع‌نگاری کامیت با UTF\-8 کدگذاری شوند، اما هم هسته و هم لایه کاربری گیت (Git Porcelain) به گونه‌ای طراحی شده‌اند که UTF\-8 را به پروژه‌ها تحمیل نکنند\&. اگر همه مشارکت‌کنندگان یک پروژه خاص استفاده از کدگذاری‌های قدیمی را راحت‌تر بدانند، گیت آن را منع نمی‌کند\&. با این وجود، چند نکته وجود دارد که باید در نظر داشته باشید\&. .sp .RS 4 .ie n \{\ \h'-04' 1.\h'+01'\c .\} .el \{\ .sp -1 .IP " 1." 4.2 .\} دستورات \fBgit\fR \fBcommit\fR و \fBgit\fR \fBcommit\-tree\fR در صورتی که پیام وقایع‌نگاری کامیت داده‌شده به آن‌ها شبیه یک رشته معتبر UTF\-8 نباشد هشدار صادر می‌کنند، مگر اینکه صریحاً اعلام کنید که پروژه شما از یک کدگذاری قدیمی استفاده می‌کند\&. روش اعلام این موضوع، قرار دادن \fBi18n\&.commitEncoding\fR در فایل \fB\&.git/config\fR است، مانند این: .sp .if n \{\ .RS 4 .\} .nf [i18n] commitEncoding = ISO\-8859\-1 .fi .if n \{\ .RE .\} .sp شیءهای کامیت ایجادشده با تنظیمات فوق، مقدار \fBi18n\&.commitEncoding\fR را در هدر \fBencoding\fR خود ثبت می‌کنند\&. این کار برای کمک به افراد دیگری است که بعداً به آن‌ها نگاه می‌کنند\&. عدم وجود این هدر به این معنی است که پیام وقایع‌نگاری کامیت با UTF\-8 کدگذاری شده است\&. .RE .sp .RS 4 .ie n \{\ \h'-04' 2.\h'+01'\c .\} .el \{\ .sp -1 .IP " 2." 4.2 .\} دستورات \fBgit\fR \fBlog\fR، \fBgit\fR \fBshow\fR، \fBgit\fR \fBblame\fR و نظایر آن‌ها هدر \fBencoding\fR یک شیء کامیت را بررسی می‌کنند و سعی می‌کنند پیام وقایع‌نگاری را به UTF\-8 بازکدگذاری کنند مگر اینکه خلاف آن مشخص شده باشد\&. می‌توانید کدگذاری خروجی مورد نظر را با \fBi18n\&.logOutputEncoding\fR در فایل \fB\&.git/config\fR مشخص کنید، مانند این: .sp .if n \{\ .RS 4 .\} .nf [i18n] logOutputEncoding = ISO\-8859\-1 .fi .if n \{\ .RE .\} .sp اگر این متغیر پیکربندی را نداشته باشید، مقدار \fBi18n\&.commitEncoding\fR به جای آن استفاده می‌شود\&. .RE .sp توجه داشته باشید که ما عمداً تصمیم گرفتیم هنگام ایجاد کامیت، پیام وقایع‌نگاری کامیت را برای تحمیل UTF\-8 در سطح شیء کامیت بازکدگذاری نکنیم، زیرا تبدیل مجدد به UTF\-8 لزوماً یک عملیات برگشت‌پذیر نیست\&. .SH "فایل‌ها (FILES)" .sp /etc/mailname .SH "همچنین ببینید (SEE ALSO)" .sp \fBgit-write-tree\fR(1) \fBgit-commit\fR(1) .SH "GIT" .sp بخشی از مجموعه \fBgit\fR(1)