'\" t .\" Title: git-patch-id .\" 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\-PATCH\-ID" "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-patch-id \- محاسبه شناسه یکتا برای وصله‌ها .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fBgit\fR \fBpatch\-id\fR [\fB\-\-stable\fR | \fB\-\-unstable\fR | \fB\-\-verbatim\fR] .fi .sp .SH "توضیحات (DESCRIPTION)" .sp وصله‌ها را از ورودی استاندارد می‌خواند و شناسه وصله (patch ID) را محاسبه می‌کند\&. .sp یک «شناسه وصله» چیزی جز مجموع SHA\-1 از تفاوت‌های فایلی مرتبط با یک وصله با صرف‌نظر از شماره خطوط نیست\&. به این ترتیب، «تا حد معقولی پایدار» و در عین حال به اندازه کافی یکتا است؛ یعنی تضمین می‌شود دو وصله‌ای که «شناسه وصله» یکسانی دارند تقریباً مطمئناً یکی هستند\&. .sp کاربرد اصلی این دستور جستجو برای یافتن کامیت‌های تکراری احتمالی است\&. .sp هنگام کار با خروجی \fBgit\fR \fBdiff\-tree\fR \fB\-\-patch\fR، این دستور از این واقعیت که پیش از وصله نام شیء کامیت قرار دارد بهره می‌برد و دو رشته هگزادسیمال ۴۰ بایتی خروجی می‌دهد\&. رشته اول شناسه وصله و رشته دوم شناسه کامیت است\&. از این قابلیت می‌توان برای ایجاد یک نگاشت میان شناسه وصله و شناسه کامیت برای مجموعه‌ای یا بازه‌ای از کامیت‌ها استفاده کرد\&. .SH "گزینه‌ها (OPTIONS)" .PP \fB\-\-verbatim\fR .RS 4 شناسه وصله ورودی را دقیقاً به همان صورت که داده شده محاسبه می‌کند و هیچ‌گونه فاصله خالی (whitespace) را حذف نمی‌کند\&. این گزینه متضمن \fB\-\-stable\fR بوده و مانع از \fB\-\-unstable\fR می‌شود\&. .sp اگر مقدار \fBpatchid\&.verbatim\fR برابر \fBtrue\fR باشد، این حالت پیش‌فرض است\&. .RE .PP \fB\-\-stable\fR .RS 4 از یک مجموع هش «پایدار» به عنوان شناسه وصله استفاده می‌کند\&. با این گزینه: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} تغییر ترتیب تفاوت‌های فایلی که یک وصله را تشکیل می‌دهند بر شناسه تأثیری نمی‌گذارد\&. به‌ویژه، دو وصله تولیدشده از مقایسه دو درخت یکسان با دو تنظیم متفاوت برای \fB\-O\fR\fI\fR منجر به یک امضای شناسه وصله یکسان می‌شوند، که به این ترتیب امکان استفاده از نتیجه محاسبه‌شده به عنوان یک کلید برای ایندکس کردن برخی فراداده‌ها درباره تغییر میان دو درخت را فراهم می‌سازد\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} نتیجه با مقدار تولیدشده توسط گیت نسخه 1\&.9 و قدیمی‌تر یا مقداری که هنگام تنظیم یک هش «ناپایدار» (گزینه \fB\-\-unstable\fR در زیر را ببینید) ایجاد می‌شود متفاوت است \- حتی زمانی که روی خروجی diff بدون هیچ‌گونه استفاده از \fB\-O\fR\fI\fR اعمال شود؛ در نتیجه پایگاه‌های داده موجود که چنین شناسه‌های وصله «ناپایدار» یا قدیمی را ذخیره کرده‌اند غیرقابل استفاده می‌شوند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} تمام فاصله‌های خالی (whitespace) درون وصله نادیده گرفته می‌شوند و تأثیری بر شناسه نمی‌گذارند\&. .RE .sp اگر \fBpatchid\&.stable\fR روی \fBtrue\fR تنظیم شده باشد، این حالت پیش‌فرض است\&. .RE .PP \fB\-\-unstable\fR .RS 4 از یک هش «ناپایدار» به عنوان شناسه وصله استفاده می‌کند\&. با این گزینه، نتیجه تولیدشده با مقدار شناسه وصله تولیدشده توسط گیت 1\&.9 و قدیمی‌تر سازگار است و فاصله‌های خالی نادیده گرفته می‌شوند\&. کاربرانی با پایگاه‌های داده از پیش موجود که شناسه‌های وصله تولیدشده با گیت 1\&.9 و قدیمی‌تر را ذخیره کرده‌اند (و با وصله‌های تغییرترتیب‌یافته سر و کار ندارند) ممکن است بخواهند از این گزینه استفاده کنند\&. .sp این گزینه پیش‌فرض است\&. .RE .SH "مثال‌ها (EXAMPLES)" .sp دستور \fBgit-cherry\fR(1) نشان می‌دهد چه کامیت‌هایی از یک شاخه دارای کامیت‌های معادل شناسه وصله در شاخه‌ای بالادست هستند\&. اما فقط به شما می‌گوید که آیا چنین کامیتی وجود دارد یا خیر\&. اگر بخواهید کامیت‌های مربوطه را در بالادست بدانید چه؟ می‌توانیم از این دستور برای ایجاد یک نگاشت میان شاخه شما و شاخه بالادست استفاده کنیم: .sp .if n \{\ .RS 4 .\} .nf #!/bin/sh upstream="$1" branch="$2" test \-z "$branch" && branch=HEAD limit="$3" if test \-n "$limit" then tail_opts="$limit"\&.\&."$upstream" else since=$(git log \-\-format=%aI "$upstream"\&.\&."$branch" | tail \-1) tail_opts=\-\-since="$since"\*(Aq \*(Aq"$upstream" fi for_branch=$(mktemp) for_upstream=$(mktemp) git rev\-list \-\-no\-merges "$upstream"\&.\&."$branch" | git diff\-tree \-\-patch \-\-stdin | git patch\-id \-\-stable | sort >"$for_branch" git rev\-list \-\-no\-merges $tail_opts | git diff\-tree \-\-patch \-\-stdin | git patch\-id \-\-stable | sort >"$for_upstream" join \-a1 "$for_branch" "$for_upstream" | cut \-d\*(Aq \*(Aq \-f2,3 rm "$for_branch" rm "$for_upstream" .fi .if n \{\ .RE .\} .sp .sp اکنون ستون اول کامیت مربوط به شاخه شما را نشان می‌دهد و ستون دوم کامیت معادل شناسه وصله را در صورت وجود نمایش می‌دهد\&. .SH "همچنین ببینید (SEE ALSO)" .sp \fBgit-cherry\fR(1) .SH "گیت (GIT)" .sp بخشی از مجموعه \fBgit\fR(1)