'\" t .\" Title: git-cherry-pick .\" 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\-CHERRY\-PICK" "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-cherry-pick \- اعمال تغییرات ایجادشده توسط برخی کامیت‌های موجود .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fIgit cherry\-pick\fR [\-\-edit] [\-n] [\-m ] [\-s] [\-x] [\-\-ff] [\-S[]] \&... \fIgit cherry\-pick\fR (\-\-continue | \-\-skip | \-\-abort | \-\-quit) .fi .sp .SH "توضیحات (DESCRIPTION)" .sp با دریافت یک یا چند کامیت موجود، تغییراتی را که هر یک ایجاد کرده‌اند اعمال می‌کند و برای هر کدام یک کامیت جدید ثبت می‌نماید\&. این کار نیازمند آن است که درخت کاری (working tree) شما تمیز باشد (هیچ تغییری نسبت به کامیت HEAD وجود نداشته باشد)\&. .sp هنگامی که نحوه اعمال یک تغییر مشخص و بدیهی نباشد، موارد زیر رخ می‌دهد: .sp .RS 4 .ie n \{\ \h'-04' 1.\h'+01'\c .\} .el \{\ .sp -1 .IP " 1." 4.2 .\} شاخه فعلی و اشاره‌گر \fBHEAD\fR روی آخرین کامیتی که با موفقیت ایجاد شده است باقی می‌مانند\&. .RE .sp .RS 4 .ie n \{\ \h'-04' 2.\h'+01'\c .\} .el \{\ .sp -1 .IP " 2." 4.2 .\} ارجاع \fBCHERRY_PICK_HEAD\fR به‌گونه‌ای تنظیم می‌شود که به کامیتی اشاره کند که تغییر دشوار برای اعمال را ایجاد کرده است\&. .RE .sp .RS 4 .ie n \{\ \h'-04' 3.\h'+01'\c .\} .el \{\ .sp -1 .IP " 3." 4.2 .\} مسیرهایی که در آن‌ها تغییر بدون مشکل اعمال شده است، هم در فایل نمایه و هم در درخت کاری شما به‌روزرسانی می‌شوند\&. .RE .sp .RS 4 .ie n \{\ \h'-04' 4.\h'+01'\c .\} .el \{\ .sp -1 .IP " 4." 4.2 .\} برای مسیرهای دارای تداخل، فایل نمایه تا سه نسخه را ثبت می‌کند، همان‌طور که در بخش "TRUE MERGE" از \fBgit-merge\fR(1) توصیف شده است\&. فایل‌های درخت کاری شامل توضیحی از تداخل خواهند بود که میان نشانگرهای معمول تداخل <<<<<<< و >>>>>>> قرار گرفته‌اند\&. .RE .sp .RS 4 .ie n \{\ \h'-04' 5.\h'+01'\c .\} .el \{\ .sp -1 .IP " 5." 4.2 .\} هیچ تغییر دیگری اعمال نمی‌شود\&. .RE .sp برای نکاتی در مورد حل چنین تداخل‌هایی، به \fBgit-merge\fR(1) مراجعه کنید\&. .SH "گزینه‌ها (OPTIONS)" .PP \&... .RS 4 کامیت‌هایی که باید گلچین شوند\&. برای فهرستی کامل‌تر از روش‌های ارجاع به کامیت‌ها، به \fBgitrevisions\fR(7) مراجعه کنید\&. مجموعه‌ای از کامیت‌ها می‌توانند داده شوند اما به‌طور پیش‌فرض هیچ پیمایشی انجام نمی‌شود، درست مانند زمانی که گزینه \fB\-\-no\-walk\fR مشخص شده باشد؛ به \fBgit-rev-list\fR(1) مراجعه کنید\&. توجه داشته باشید که تعیین یک محدوده، تمام آرگومان‌های \&... را به یک پیمایش بازنگری واحد ارسال می‌کند (به مثالی در ادامه که از \fImaint master\&.\&.next\fR استفاده می‌کند مراجعه کنید)\&. .RE .PP \-e, \-\-edit .RS 4 با این گزینه، \fIgit cherry\-pick\fR به شما امکان می‌دهد پیام کامیت را پیش از ثبت آن ویرایش کنید\&. .RE .PP \-\-cleanup= .RS 4 این گزینه نحوه پاک‌سازی پیام کامیت را قبل از ارسال به سازوکار کامیت تعیین می‌کند\&. برای جزئیات بیشتر به \fBgit-commit\fR(1) مراجعه کنید\&. به‌ویژه، اگر به \fI\fR مقدار \fBscissors\fR داده شود، در صورت بروز تداخل، پیش از ارسال به \fBMERGE_MSG\fR علامت قیچی (خط برش) اضافه خواهد شد\&. .RE .PP \-x .RS 4 هنگام ثبت کامیت، خطی با مضمون "(cherry picked from commit \&...)" به پیام کامیت اصلی اضافه می‌کند تا مشخص شود این تغییر از کدام کامیت گلچین شده است\&. این کار فقط برای گلچین‌های بدون تداخل انجام می‌شود\&. اگر از شاخه خصوصی خود گلچین می‌کنید از این گزینه استفاده نکنید، زیرا این اطلاعات برای دریافت‌کننده بی‌فایده است\&. از سوی دیگر، اگر بین دو شاخه عمومی در حال گلچین کردن هستید (به‌عنوان مثال، انتقال یک اصلاح از یک شاخه توسعه به شاخه نگهداری یک نسخه قدیمی‌تر)، افزودن این اطلاعات می‌تواند مفید باشد\&. .RE .PP \-r .RS 4 در گذشته رفتار پیش‌فرض دستور اجرای \fB\-x\fR توضیح داده شده در بالا بود و \fB\-r\fR برای غیرفعال کردن آن به کار می‌رفت\&. اکنون رفتار پیش‌فرض عدم اجرای \fB\-x\fR است، بنابراین این گزینه بی‌اثر است\&. .RE .PP \-m , \-\-mainline .RS 4 معمولاً نمی‌توانید یک کامیت ادغام را گلچین کنید زیرا مشخص نیست کدام سمت ادغام باید به عنوان خط اصلی (mainline) در نظر گرفته شود\&. این گزینه شماره والد خط اصلی را (با شروع از ۱) مشخص می‌کند و به cherry\-pick امکان می‌دهد تغییر را نسبت به والد مشخص‌شده بازپخش کند\&. .RE .PP \-n, \-\-no\-commit .RS 4 معمولاً این دستور به‌طور خودکار دنباله‌ای از کامیت‌ها را ایجاد می‌کند\&. این فلگ تغییرات لازم برای گلچین کردن هر کامیت مشخص‌شده را روی درخت کاری و نمایه شما اعمال می‌کند، بدون اینکه کامیتی ثبت شود\&. علاوه بر این، هنگامی که این گزینه استفاده می‌شود، نیازی نیست نمایه شما با کامیت HEAD مطابقت داشته باشد\&. عملیات گلچین نسبت به وضعیت اولیه نمایه شما انجام می‌شود\&. .sp این گزینه زمانی مفید است که اثر بیش از یک کامیت را پشت سر هم روی نمایه خود اعمال کنید\&. .RE .PP \-s, \-\-signoff .RS 4 یک دنباله \fBSigned\-off\-by\fR در انتهای پیام کامیت اضافه می‌کند\&. برای اطلاعات بیشتر گزینه signoff را در \fBgit-commit\fR(1) ببینید\&. .RE .PP \-S[], \-\-gpg\-sign[=], \-\-no\-gpg\-sign .RS 4 امضای کامیت‌ها با GPG\&. آرگومان \fBkeyid\fR اختیاری است و مقدار پیش‌فرض آن هویت کامیت‌کننده است؛ در صورت تعیین، باید بدون فاصله به گزینه بچسبد\&. گزینه \fB\-\-no\-gpg\-sign\fR برای لغو هر دو مورد متغیر پیکربندی \fBcommit\&.gpgSign\fR و گزینه قبلی \fB\-\-gpg\-sign\fR مفید است\&. .RE .PP \-\-ff .RS 4 اگر HEAD فعلی با والد کامیت گلچین‌شده یکی باشد، یک پیش‌روی سریع (fast forward) به این کامیت انجام خواهد شد\&. .RE .PP \-\-allow\-empty .RS 4 به‌طور پیش‌فرض، گلچین کردن یک کامیت خالی ناموفق خواهد بود که نشان می‌دهد اجرای صریح \fBgit\fR \fBcommit\fR \fB\-\-allow\-empty\fR لازم است\&. این گزینه آن رفتار را نادیده می‌گیرد و اجازه می‌دهد کامیت‌های خالی به‌طور خودکار در عملیات گلچین حفظ شوند\&. توجه داشته باشید که وقتی "\-\-ff" فعال است، کامیت‌های خالی که شرط "پیش‌روی سریع" را دارند حتی بدون این گزینه نیز حفظ خواهند شد\&. همچنین توجه داشته باشید که استفاده از این گزینه فقط کامیت‌هایی را که در ابتدا خالی بودند (یعنی کامیت همان درختی را ثبت کرده بود که والدش داشت) حفظ می‌کند\&. کامیت‌هایی که به دلیل یک کامیت قبلی خالی شده‌اند باعث شکست عملیات گلچین می‌شوند\&. برای اجبار به گنجاندن این کامیت‌ها، از \fB\-\-empty=keep\fR استفاده کنید\&. .RE .PP \-\-allow\-empty\-message .RS 4 به‌طور پیش‌فرض، گلچین کردن یک کامیت با پیام خالی ناموفق خواهد بود\&. این گزینه این رفتار را نادیده می‌گیرد و اجازه می‌دهد کامیت‌های با پیام خالی گلچین شوند\&. .RE .PP \-\-empty=(drop|keep|stop) .RS 4 نحوه مدیریت کامیت‌های در حال گلچین شدن که با تغییرات موجود در تاریخچه فعلی تکراری (redundant) هستند را تعیین می‌کند\&. .PP \fBdrop\fR .RS 4 کامیت کنار گذاشته خواهد شد\&. .RE .PP \fBkeep\fR .RS 4 کامیت حفظ خواهد شد\&. مستلزم \fB\-\-allow\-empty\fR است\&. .RE .PP \fBstop\fR .RS 4 با اعمال شدن کامیت، عملیات گلچین متوقف می‌شود و به شما امکان می‌دهد کامیت را بررسی کنید\&. این رفتار پیش‌فرض است\&. .RE .sp توجه داشته باشید که \fB\-\-empty=drop\fR و \fB\-\-empty=stop\fR تنها نحوه مدیریت کامیتی را مشخص می‌کنند که در ابتدا خالی نبوده، بلکه به دلیل یک کامیت قبلی خالی شده است\&. کامیت‌هایی که در ابتدا خالی بوده‌اند همچنان باعث شکست عملیات گلچین خواهند شد، مگر اینکه یکی از گزینه‌های \fB\-\-empty=keep\fR یا \fB\-\-allow\-empty\fR مشخص شده باشد\&. .RE .PP \-\-keep\-redundant\-commits .RS 4 مترادف منسوخ‌شده برای \fB\-\-empty=keep\fR\&. .RE .PP \-\-strategy= .RS 4 استفاده از راهبرد ادغام مشخص‌شده\&. فقط باید یک بار استفاده شود\&. برای جزئیات به بخش MERGE STRATEGIES در \fBgit-merge\fR(1) مراجعه کنید\&. .RE .PP \-X