'\" t .\" Title: git-merge .\" 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\-MERGE" "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-merge \- ادغام دو یا چند تاریخچه توسعه با یکدیگر .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fBgit\fR \fBmerge\fR [\fB\-n\fR] [\fB\-\-stat\fR] [\fB\-\-compact\-summary\fR] [\fB\-\-no\-commit\fR] [\fB\-\-squash\fR] [\fB\-\-\fR[\fBno\-\fR]\fBedit\fR] [\fB\-\-no\-verify\fR] [\fB\-s\fR \fI\fR] [\fB\-X\fR \fI\fR] [\fB\-S\fR[\fI\fR]] [\fB\-\-\fR[\fBno\-\fR]\fBallow\-unrelated\-histories\fR] [\fB\-\-\fR[\fBno\-\fR]\fBrerere\-autoupdate\fR] [\fB\-m\fR \fI\fR] [\fB\-F\fR \fI\fR] [\fB\-\-into\-name\fR \fI\fR] [\fI\fR\&...] \fBgit\fR \fBmerge\fR (\fB\-\-continue\fR | \fB\-\-abort\fR | \fB\-\-quit\fR) .fi .sp .SH "توضیحات (DESCRIPTION)" .sp تغییرات مربوط به کامیت‌های نام‌برده‌شده (از زمانی که تاریخچه آن‌ها از شاخه جاری منشعب شد) را در شاخه جاری ادغام می‌کند\&. این دستور توسط \fBgit\fR \fBpull\fR برای اعمال تغییرات از یک مخزن دیگر استفاده می‌شود و همچنین می‌توان از آن به‌صورت دستی برای ادغام تغییرات از یک شاخه به شاخه دیگر استفاده کرد\&. .sp فرض کنید تاریخچه زیر وجود دارد و شاخه جاری \fBmaster\fR است: .sp .if n \{\ .RS 4 .\} .nf A\-\-\-B\-\-\-C topic / D\-\-\-E\-\-\-F\-\-\-G master .fi .if n \{\ .RE .\} .sp .sp سپس دستور \fBgit\fR \fBmerge\fR \fBtopic\fR تغییرات ایجادشده در شاخه \fBtopic\fR از زمان انشعاب آن از \fBmaster\fR (یعنی \fBE\fR) تا کامیت جاری آن (\fBC\fR) را بر روی \fBmaster\fR بازپخش می‌کند و نتیجه را در یک کامیت جدید به همراه نام دو کامیت والد و یک پیام گزارش از کاربر که تغییرات را توصیف می‌کند ثبت می‌نماید\&. پیش از این عملیات، \fBORIG_HEAD\fR روی نوک شاخه جاری (\fBG\fR) تنظیم می‌شود\&. .sp .if n \{\ .RS 4 .\} .nf A\-\-\-B\-\-\-C topic / \e D\-\-\-E\-\-\-F\-\-\-G\-\-\-H master .fi .if n \{\ .RE .\} .sp .sp اگر تعارضی وجود داشته باشد که نتوان آن را به‌صورت خودکار حل‌وفصل کرد یا اگر هنگام آغاز ادغام گزینه \fB\-\-no\-commit\fR مشخص شده باشد، عملیات ادغام متوقف می‌شود\&. در آن نقطه می‌توانید \fBgit\fR \fBmerge\fR \fB\-\-abort\fR یا \fBgit\fR \fBmerge\fR \fB\-\-continue\fR را اجرا کنید\&. .sp دستور \fBgit\fR \fBmerge\fR \fB\-\-abort\fR فرایند ادغام را لغو کرده و تلاش می‌کند وضعیت پیش از ادغام را بازسازی کند\&. با این حال، اگر هنگام آغاز ادغام تغییرات ثبت‌نشده‌ای وجود داشته باشد (و به‌ویژه اگر آن تغییرات پس از آغاز ادغام بیشتر دستکاری شده باشند)، در برخی موارد \fBgit\fR \fBmerge\fR \fB\-\-abort\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 .sp اجرای \fBgit\fR \fBmerge\fR همراه با تغییرات ثبت‌نشدهٔ مهم توصیه نمی‌شود: هرچند این کار امکان‌پذیر است، اما در صورت بروز تعارض ممکن است شما را در وضعیتی قرار دهد که بازگشت از آن دشوار باشد\&. .sp .5v .RE .SH "گزینه‌ها (OPTIONS)" .PP \fB\-\-commit\fR, \fB\-\-no\-commit\fR .RS 4 ادغام را انجام داده و نتیجه را کامیت می‌کند\&. از این گزینه می‌توان برای لغو اثر \fB\-\-no\-commit\fR استفاده کرد\&. .sp با \fB\-\-no\-commit\fR ادغام را انجام داده و درست پیش از ایجاد کامیت ادغام متوقف می‌شود، تا به کاربر فرصت بازبینی و اصلاح بیشتر نتیجه ادغام پیش از کامیت کردن داده شود\&. .sp توجه داشته باشید که به‌روزرسانی‌های فست‌فوروارد (fast\-forward) کامیت ادغام ایجاد نمی‌کنند و بنابراین راهی برای متوقف کردن این ادغام‌ها با \fB\-\-no\-commit\fR وجود ندارد\&. از این رو، اگر می‌خواهید مطمئن شوید که شاخه شما توسط دستور ادغام تغییر نکرده یا به‌روزرسانی نمی‌شود، از \fB\-\-no\-ff\fR همراه با \fB\-\-no\-commit\fR استفاده کنید\&. .RE .PP \fB\-\-edit\fR, \fB\-e\fR, \fB\-\-no\-edit\fR .RS 4 پیش از کامیت کردن یک ادغام مکانیکی موفق، ویرایشگری را فراخوانی می‌کند تا پیام ادغام تولیدشده به‌طور خودکار ویرایش شود، تا کاربر بتواند ادغام را توضیح داده و توجیه کند\&. گزینه \fB\-\-no\-edit\fR می‌تواند برای پذیرش پیام تولیدشده به‌طور خودکار استفاده شود (این کار عموماً توصیه نمی‌شود)\&. گزینه \fB\-\-edit\fR (یا \fB\-e\fR) همچنان زمانی کاربرد دارد که یک پیام پیش‌نویس را با گزینه \fB\-m\fR از خط فرمان داده باشید و بخواهید آن را در ویرایشگر ویرایش کنید\&. .sp اسکریپت‌های قدیمی‌تر ممکن است به رفتار تاریخی عدم اجازه به کاربر برای ویرایش پیام لاگ ادغام وابسته باشند\&. آن‌ها هنگام اجرای \fBgit\fR \fBmerge\fR باز شدن یک ویرایشگر را مشاهده خواهند کرد\&. برای آسان‌تر کردن تطبیق چنین اسکریپت‌هایی با رفتار به‌روزرسانی‌شده، متغیر محیطی \fBGIT_MERGE_AUTOEDIT\fR می‌تواند در ابتدای آن‌ها روی \fBno\fR تنظیم شود\&. .RE .PP \fB\-\-cleanup=\fR\fI\fR .RS 4 این گزینه تعیین می‌کند که پیام ادغام پیش از کامیت چگونه پاک‌سازی شود\&. برای جزئیات بیشتر \fBgit-commit\fR(1) را ببینید\&. علاوه بر این، اگر به \fI\fR مقدار \fBscissors\fR داده شود، در صورت بروز تداخل ادغام، خط قیچی (scissors) پیش از ارسال به سازوکار کامیت به \fBMERGE_MSG\fR اضافه خواهد شد\&. .RE .PP \fB\-\-ff\fR, \fB\-\-no\-ff\fR, \fB\-\-ff\-only\fR .RS 4 مشخص می‌کند در صورتی که تاریخچه ادغام‌شده از قبل از نوادگان تاریخچه کنونی باشد، ادغام چگونه مدیریت شود\&. \fB\-\-ff\fR حالت پیش‌فرض است مگر اینکه یک برچسب (tag) دارای یادداشت (و احتمالاً امضاشده) ادغام شود که در جایگاه طبیعی خود در سلسله‌مراتب \fBrefs/tags/\fR ذخیره نشده است، که در این حالت \fB\-\-no\-ff\fR فرض می‌شود\&. .sp با \fB\-\-ff\fR، در صورت امکان، ادغام را به‌صورت فست‌فوروارد حل می‌کند (تنها اشاره‌گر شاخه را مطابق با شاخه ادغام‌شده به‌روزرسانی می‌کند؛ کامیت ادغام ایجاد نمی‌کند)\&. در صورت عدم امکان (زمانی که تاریخچه ادغام‌شده از نوادگان تاریخچه کنونی نباشد)، یک کامیت ادغام ایجاد می‌کند\&. .sp با \fB\-\-no\-ff\fR، در تمام موارد یک کامیت ادغام ایجاد می‌کند، حتی زمانی که ادغام می‌توانست در عوض به‌صورت فست‌فوروارد حل شود\&. .sp با \fB\-\-ff\-only\fR، در صورت امکان ادغام را به‌صورت فست‌فوروارد حل می‌کند\&. در صورت عدم امکان، از ادغام امتناع کرده و با وضعیت غیرصفر خارج می‌شود\&. .RE .PP \fB\-S\fR[\fI\fR], \fB\-\-gpg\-sign\fR[\fB=\fR\fI\fR], \fB\-\-no\-gpg\-sign\fR .RS 4 کامیت ادغام حاصل را با GPG امضا می‌کند\&. آرگومان \fI\fR اختیاری است و پیش‌فرض آن هویت کامیت‌کننده است؛ در صورت تعیین، باید بدون فاصله به گزینه متصل باشد\&. \fB\-\-no\-gpg\-sign\fR برای باطل کردن هم متغیر پیکربندی \fBcommit\&.gpgSign\fR و هم گزینه قبلی \fB\-\-gpg\-sign\fR مفید است\&. .RE .PP \fB\-\-log\fR[\fB=\fR\fI\fR], \fB\-\-no\-log\fR .RS 4 علاوه بر نام شاخه‌ها، پیام لاگ را با توضیحات یک‌خطی از حداکثر \fI\fR کامیت واقعی که در حال ادغام هستند پر می‌کند\&. همچنین \fBgit-fmt-merge-msg\fR(1) را ببینید\&. .sp با \fB\-\-no\-log\fR توضیحات یک‌خطی کامیت‌های واقعی در حال ادغام را فهرست نمی‌کند\&. .RE .PP \fB\-\-signoff\fR, \fB\-\-no\-signoff\fR .RS 4 یک دنباله (trailer) \fBSigned\-off\-by\fR توسط کامیت‌کننده در انتهای پیام لاگ کامیت اضافه می‌کند\&. معنای signoff به پروژه‌ای که در آن کامیت می‌کنید بستگی دارد\&. برای مثال، ممکن است گواهی دهد که کامیت‌کننده حق ارسال اثر تحت پروانه پروژه را دارد یا با برخی از بیانیه‌های مشارکت‌کنندگان، مانند «گواهی مبدا توسعه‌دهنده» (Developer Certificate of Origin) موافقت می‌کند\&. (برای نمونه مورد استفاده توسط هسته لینوکس و پروژه‌های گیت، \m[blue]\fBhttps://developercertificate\&.org\fR\m[] را ببینید\&.) برای درک نحوه استفاده از signoffها در پروژه‌ای که در آن مشارکت می‌کنید، با مستندات یا راهبری آن پروژه مشورت کنید\&. .sp گزینه \fB\-\-no\-signoff\fR می‌تواند برای باطل کردن گزینه قبلی \fB\-\-signoff\fR در خط فرمان استفاده شود\&. .sp گیت یک متغیر پیکربندی برای فعال کردن گزینه خط فرمان \fB\-\-signoff\fR به صورت پیش‌فرض ندارد (و نخواهد داشت)؛ برای جزئیات بیشتر ورودی \fBcommit\&.signoff\fR را در \fBgitfaq\fR(7) ببینید\&. .RE .PP \fB\-\-stat\fR, \fB\-n\fR, \fB\-\-no\-stat\fR .RS 4 یک diffstat در پایان ادغام نمایش می‌دهد\&. این diffstat همچنین توسط گزینه پیکربندی merge\&.stat کنترل می‌شود\&. .sp با \fB\-n\fR یا \fB\-\-no\-stat\fR در پایان ادغام diffstat نشان داده نمی‌شود\&. .RE .PP \fB\-\-compact\-summary\fR .RS 4 یک خلاصه فشرده (compact\-summary) در پایان ادغام نمایش می‌دهد\&. .RE .PP \fB\-\-squash\fR, \fB\-\-no\-squash\fR .RS 4 وضعیت درخت کاری و نمایه را به‌گونه‌ای ایجاد می‌کند که گویی یک ادغام واقعی رخ داده است (به‌جز اطلاعات ادغام)، اما در واقع کامیتی ایجاد نمی‌کند، \fBHEAD\fR را جابجا نمی‌کند، یا \fB$GIT_DIR/MERGE_HEAD\fR را ثبت نمی‌کند (تا باعث شود دستور بعدی \fBgit\fR \fBcommit\fR یک کامیت ادغام ایجاد کند)\&. این به شما امکان می‌دهد تا یک کامیت منفرد بر روی شاخه کنونی بسازید که تأثیر آن همانند ادغام یک شاخه دیگر (یا بیشتر در حالت ادغام چندگانه یا اختاپوس) است\&. .sp با \fB\-\-no\-squash\fR ادغام را انجام داده و نتیجه را کامیت می‌کند\&. این گزینه می‌تواند برای لغو اثر \fB\-\-squash\fR استفاده شود\&. .sp با \fB\-\-squash\fR، استفاده از \fB\-\-commit\fR مجاز نبوده و ناموفق خواهد بود\&. .RE .PP \fB\-\-verify\fR, \fB\-\-no\-verify\fR .RS 4 به‌طور پیش‌فرض، قلاب‌های pre\-merge و commit\-msg اجرا می‌شوند\&. هنگامی که \fB\-\-no\-verify\fR مشخص شود، این قلاب‌ها دور زده می‌شوند\&. همچنین \fBgithooks\fR(5) را ببینید\&. .RE .PP \fB\-s\fR \fI\fR, \fB\-\-strategy=\fR\fI\fR .RS 4 از راهبرد ادغام داده‌شده استفاده می‌کند؛ می‌تواند بیش از یک بار مشخص شود تا به ترتیبی که باید امتحان شوند تعیین گردند\&. اگر گزینه \fB\-s\fR مشخص نشود، یک فهرست درونی از راهبردها استفاده می‌شود (\fBort\fR هنگام ادغام یک سر (head) منفرد، و در غیر این صورت \fBoctopus\fR)\&. .RE .PP \fB\-X\fR \fI