| GIT-COMMIT-TREE(1) | Git Manual | GIT-COMMIT-TREE(1) |
نام (NAME)
git-commit-tree - ایجاد یک شیء کامیت جدید
خلاصه دستور (SYNOPSIS)
git commit-tree <tree> [(-p <parent>)...]
git commit-tree [(-p <parent>)...] [-S[<keyid>]] [(-m <message>)...]
[(-F <file>)...] <tree>
توضیحات (DESCRIPTION)
این دستور معمولاً چیزی نیست که یک کاربر نهایی بخواهد مستقیماً اجرا کند. به جای آن git-commit(1) را ببینید.
یک شیء کامیت جدید بر اساس شیء درخت ارائهشده ایجاد میکند و شناسه شیء کامیت جدید را در خروجی استاندارد صادر مینماید. پیام وقایعنگاری از ورودی استاندارد خوانده میشود، مگر اینکه گزینههای -m یا -F مشخص شده باشند.
گزینههای -m و -F میتوانند به هر تعداد بار و با هر ترتیبی داده شوند. پیام وقایعنگاری کامیت به همان ترتیبی که گزینهها مشخص شدهاند تشکیل خواهد شد.
یک شیء کامیت ممکن است هر تعداد والد داشته باشد. با داشتن دقیقاً یک والد، یک کامیت معمولی است. داشتن بیش از یک والد، کامیت را به یک ادغام (merge) میان چندین خط تاریخچه تبدیل میکند. کامیتهای اولیه (ریشه) هیچ والدی ندارند.
در حالی که یک درخت نمایانگر وضعیت دایرکتوری خاصی از یک دایرکتوری کاری است، یک کامیت آن وضعیت را در «زمان» نشان میدهد و چگونگی رسیدن به آن را توضیح میدهد.
معمولاً یک کامیت یک وضعیت جدید برای «HEAD» را مشخص میکند، و در حالی که گیت اهمیتی نمیدهد که یادداشت مربوط به آن وضعیت را در کجا ذخیره میکنید، در عمل معمولاً نتیجه را فقط در فایلی مینویسیم که توسط .git/HEAD به آن اشاره میشود، تا همیشه بتوانیم ببینیم آخرین وضعیت کامیتشده چه بوده است.
گزینهها (OPTIONS)
<tree>
-p <parent>
-m <message>
-F <file>
-S[<keyid>], --gpg-sign[=<keyid>], --no-gpg-sign
اطلاعات کامیت (COMMIT INFORMATION)
یک کامیت موارد زیر را دربرمیگیرد:
توضیح کامیت از ورودی استاندارد خوانده میشود. اگر ورودی گزارش تغییرات از طریق تغییر مسیر «<» ارائه نشود، دستور git commit-tree منتظر میماند تا توضیحی وارد شده و با ^D خاتمه یابد.
قالبهای تاریخ (DATE FORMATS)
متغیرهای محیطی GIT_AUTHOR_DATE و GIT_COMMITTER_DATE از قالبهای تاریخ زیر پشتیبانی میکنند:
قالب داخلی گیت (Git internal format)
امنتر است که پیش از <unix-timestamp> نویسه @ قرار داده شود (مثلاً @0 +0000)، که گیت را وادار میکند آن را به عنوان یک برچسب زمانی خام تفسیر کند. این کار برای مقادیر کمتر از ۱۰۰٬۰۰۰٬۰۰۰ (که کمتر از ۹ رقم دارند) الزامی است تا از اشتباه گرفته شدن با سایر قالبهای تاریخ مانند YYYYMMDD جلوگیری شود.
RFC 2822
ISO 8601
نکته
علاوه بر این، بخش تاریخ در قالبهای زیر نیز پذیرفته میشود: YYYY.MM.DD, MM/DD/YYYY و DD.MM.YYYY.
بررسی و توضیحات تکمیلی (DISCUSSION)
گیت تا حدودی نسبت به کدگذاری نویسهها (character encoding) بیتفاوت (مستقل) است.
توجه داشته باشید که گیت در سطح هسته با نامهای مسیر صرفاً به عنوان دنبالهای از بایتهای غیر NUL رفتار میکند و هیچ تبدیل کدگذاری برای نام مسیرها وجود ندارد (به جز در مک و ویندوز). بنابراین، استفاده از نامهای مسیر غیر ASCII حتی در پلتفرمها و سیستمهای فایلی که از کدگذاریهای قدیمی ASCII گسترشیافته استفاده میکنند نیز اکثراً کار خواهد کرد. با این حال، مخازن ایجادشده در چنین سیستمهایی روی سیستمهای مبتنی بر UTF-8 (مانند لینوکس، مک، ویندوز) به درستی کار نخواهند کرد و برعکس. علاوه بر این، بسیاری از ابزارهای مبتنی بر گیت صرفاً فرض میکنند که نامهای مسیر UTF-8 هستند و در نمایش صحیح سایر کدگذاریها ناموفق خواهند بود.
اگرچه توصیه میکنیم که پیامهای وقایعنگاری کامیت با UTF-8 کدگذاری شوند، اما هم هسته و هم لایه کاربری گیت (Git Porcelain) به گونهای طراحی شدهاند که UTF-8 را به پروژهها تحمیل نکنند. اگر همه مشارکتکنندگان یک پروژه خاص استفاده از کدگذاریهای قدیمی را راحتتر بدانند، گیت آن را منع نمیکند. با این وجود، چند نکته وجود دارد که باید در نظر داشته باشید.
[i18n]
commitEncoding = ISO-8859-1
شیءهای کامیت ایجادشده با تنظیمات فوق، مقدار i18n.commitEncoding را در هدر encoding خود ثبت میکنند. این کار برای کمک به افراد دیگری است که بعداً به آنها نگاه میکنند. عدم وجود این هدر به این معنی است که پیام وقایعنگاری کامیت با UTF-8 کدگذاری شده است.
[i18n]
logOutputEncoding = ISO-8859-1
اگر این متغیر پیکربندی را نداشته باشید، مقدار i18n.commitEncoding به جای آن استفاده میشود.
توجه داشته باشید که ما عمداً تصمیم گرفتیم هنگام ایجاد کامیت، پیام وقایعنگاری کامیت را برای تحمیل UTF-8 در سطح شیء کامیت بازکدگذاری نکنیم، زیرا تبدیل مجدد به UTF-8 لزوماً یک عملیات برگشتپذیر نیست.
فایلها (FILES)
/etc/mailname
همچنین ببینید (SEE ALSO)
GIT
بخشی از مجموعه git(1)
| 2026-06-29 | Git 2.55.0 |