| GIT-AM(1) | Git Manual | GIT-AM(1) |
نام (NAME)
git-am - اعمال یک سری از وصلهها از یک صندوق پستی
خلاصه دستور (SYNOPSIS)
git am [--signoff] [--keep] [--[no-]keep-cr] [--[no-]utf8] [--[no-]verify]
[--[no-]3way] [--interactive] [--committer-date-is-author-date]
[--ignore-date] [--ignore-space-change | --ignore-whitespace]
[--whitespace=<action>] [-C<n>] [-p<n>] [--directory=<dir>]
[--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
[--[no-]scissors] [-S[<key-id>]] [--patch-format=<format>]
[--quoted-cr=<action>]
[--empty=(stop|drop|keep)]
[(<mbox> | <Maildir>)...]
git am (--continue | --skip | --abort | --quit | --retry | --show-current-patch[=(diff|raw)] | --allow-empty)
توضیحات (DESCRIPTION)
پیامهای ایمیل موجود در یک صندوق پستی (mailbox) را به پیامهای ثبت کامیت، اطلاعات نویسنده، و وصلهها تجزیه کرده و آنها را بر روی شاخه فعلی اعمال میکند. میتوانید آن را به عنوان عملیات معکوس git-format-patch(1) که بر روی شاخهای با تاریخچه مستقیم و بدون ادغام اجرا میشود در نظر بگیرید.
گزینهها (OPTIONS)
(<mbox>|<Maildir>)...
-s, --signoff
-k, --keep
--keep-non-patch
--keep-cr, --no-keep-cr
-c, --scissors
--no-scissors
--quoted-cr=<action>
--empty=(drop|keep|stop)
drop
keep
stop
-m, --message-id
--no-message-id
-q, --quiet
-u, --utf8
این گزینه در نسخههای پیشین گیت اختیاری بود، اما اکنون پیشفرض است. میتوانید از --no-utf8 برای لغو این حالت استفاده کنید.
--no-utf8
-3, --3way, --no-3way
--rerere-autoupdate, --no-rerere-autoupdate
--ignore-space-change, --ignore-whitespace, --whitespace=<action>, -C<n>, -p<n>, --directory=<dir>, --exclude=<path>, --include=<path>, --reject
مقادیر معتبر <action> برای گزینه --whitespace عبارتند از: nowarn، warn، fix، error و error-all.
--patch-format
-i, --interactive
--verify, -n, --no-verify
توجه داشته باشید که قلاب post-applypatch را نمیتوان نادیده گرفت.
--committer-date-is-author-date
هشدار
سازوکار پیمایش تاریخچه فرض میکند که کامیتها دارای برچسبهای زمانی غیرکاهشی هستند. باید بررسی کنید که آیا واقعاً به استفاده از این گزینه نیاز دارید یا خیر. شما فقط باید زمانی از این گزینه برای بازنویسی تاریخ کامیتکننده استفاده کنید که کامیتها را روی پایهای اعمال میکنید که کامیت آن (از نظر تاریخ کامیت) قدیمیتر از قدیمیترین وصلهای است که اعمال میکنید.
--ignore-date
--skip
-S[<key-id>], --gpg-sign[=<key-id>], --no-gpg-sign
--continue, -r, --resolved
--resolvemsg=<msg>
--abort
--quit
--retry
--show-current-patch[=(diff|raw)]
--allow-empty
بحث و بررسی (DISCUSSION)
نام نویسنده کامیت از خط "From: " در پیام گرفته میشود، و تاریخ نویسنده کامیت از خط "Date: " در پیام استخراج میگردد. خط "Subject: " پس از حذف پیشوند معمول "[PATCH <anything>]" به عنوان عنوان کامیت استفاده میشود. فرض بر این است که خط "Subject: " به طور خلاصه و در یک خط موضوع کامیت را بیان کند.
خطوط "From: "، "Date: " و "Subject: " که در ابتدای بدنه قرار دارند مقادیر متناظر نام نویسنده و عنوان کامیت که از سرآیندها گرفته شدهاند را بازنویسی میکنند.
پیام کامیت از عنوان برگرفته از "Subject: "، یک خط خالی و بدنه پیام تا جایی که وصله شروع میشود تشکیل میگردد. فاصلههای سفید اضافی در انتهای هر خط به صورت خودکار حذف میشوند.
انتظار میرود که وصله به صورت درونخطی و مستقیماً پس از پیام قرار داشته باشد. هر خطی که به یکی از اشکال زیر باشد:
به عنوان شروع یک وصله در نظر گرفته میشود، و پیام لاگ کامیت قبل از اولین وقوع چنین خطی خاتمه مییابد.
این بدان معناست که محتویات پیام کامیت میتواند به طور ناخواسته پردازش را قطع کند (بخش «هشدارها» در زیر را ببینید).
هنگام فراخوانی اولیه git-am(1)، نام صندوقهای پستی مورد نظر برای پردازش را به آن میدهید. به محض مشاهده اولین وصلهای که اعمال نمیشود، در میانه کار متوقف میگردد. شما میتوانید به یکی از دو روش زیر از این وضعیت خارج شوید:
این دستور از پردازش صندوقهای پستی جدید تا زمانی که عملیات فعلی تمام نشود خودداری میکند؛ بنابراین اگر تصمیم دارید کار را از ابتدا شروع کنید، پیش از اجرای دستور با نامهای صندوق پستی، دستور git am --abort را اجرا کنید.
پیش از اعمال هرگونه وصله، ORIG_HEAD به نوک شاخه فعلی تنظیم میشود. این امر در صورتی مفید است که در چندین کامیت با مشکل مواجه شوید، مانند اجرای git-am(1) روی شاخه اشتباه یا خطایی در کامیتها که اصلاح آن با تغییر صندوق پستی آسانتر است (مثلاً خطا در خطوط From:).
هشدارها (CAVEATS)
خروجی حاصل از git-format-patch(1) ممکن است هنگام اعمال با git-am(1) به پیام کامیت متفاوتی منجر شود. همچنین وصلهای که اعمال میشود ممکن است با آنچه تولید شده بود متفاوت باشد، یا اعمال وصله کاملاً شکست بخورد. برای آگاهی از قوانین نحوی، بخش «بحث و بررسی» در بالا را مشاهده کنید.
توجه داشته باشید که این موضوع به ویژه برای diffهای تورفتگینیافته که در پیام کامیت رخ میدهند مشکلساز است؛ ممکن است diff درون پیام کامیت همراه با بخش وصله اعمال شود، یا سازوکار اعمال وصله به این دلیل که هدف وصله اعمال نمیشود دچار خطا گردد. به عنوان مثال، این مسئله میتواند ناشی از یک diff در یک بلوک کد Markdown باشد.
راهحل این مشکل، ایجاد تورفتگی برای diff یا سایر متونی است که ممکن است مشکلساز شوند.
این افت کیفیت ممکن است هنگام اعمال مستقیم وصلهها از یک صندوق پستی به سادگی قابل توجه باشد. با این حال، تغییرات نشأتگرفته از گیت ممکن است به صورت دستهای اعمال شوند، که در این صورت تشخیص آن بسیار دشوارتر خواهد بود. برای نمونه، این میتواند یک توزیع لینوکس باشد که از فایلهای وصله برای اعمال تغییرات بر روی کامیتهای مخازن بالادست استفاده میکند. این نشان میدهد که این رفتار تنها بر جریانهای کاری ایمیل تأثیر نمیگذارد.
با توجه به این محدودیتها، ممکن است فرد وسوسه شود به جای آن از یک ابزار عمومی مانند patch(1) استفاده کند. با این حال، patch(1) نه تنها به دنبال diffهای تورفتگینیافته خواهد گشت (مانند git-am(1))، بلکه تلاش خواهد کرد diffهای تورفته را نیز اعمال کند.
قلابها (HOOKS)
این دستور میتواند قلابهای applypatch-msg، pre-applypatch و post-applypatch را اجرا کند. برای اطلاعات بیشتر githooks(5) را ببینید.
گزینههای --verify/-n/--no-verify را ببینید.
پیکربندی (CONFIGURATION)
تمام موارد زیر این خط در این بخش به طور گزینشی از مستندات git-config(1) گنجانده شده است. محتوا همان چیزی است که در آنجا یافت میشود:
am.keepcr
am.threeWay
am.messageId
همچنین ببینید (SEE ALSO)
گیت (GIT)
بخشی از مجموعه git(1)
| 2026-06-29 | Git 2.55.0 |