'\" t
.\" Title: git-rev-parse
.\" 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\-REV\-PARSE" "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-rev-parse \- تجزیه و اعتبارسنجی پارامترها و مشخصات ارجاع
.SH "خلاصه دستور (SYNOPSIS)"
.sp
.nf
\fIgit rev\-parse\fR [] \&...
.fi
.sp
.SH "توضیحات (DESCRIPTION)"
.sp
بسیاری از دستورات سطح بالای (porcelain) گیت ترکیبی از فلگها (یعنی پارامترهایی که با خط تیره \fI\-\fR شروع میشوند) و پارامترهای مختص دستور زیربنایی \fIgit rev\-list\fR که در داخل استفاده میکنند، و همچنین فلگها و پارامترهایی برای سایر دستوراتی که در مراحل بعدی از \fIgit rev\-list\fR استفاده میکنند را دریافت میکنند. هدف اصلی این دستور آن است که به برنامههای فراخواننده اجازه دهد بین آنها تمایز قائل شوند. چند حالت عملیاتی دیگر نیز وجود دارند که ارتباطی با این موضوع "کمک به تجزیه گزینههای خط فرمان" ندارند.
.sp
مگر در مواردی که مشخص شده باشد، بیشتر گزینهها و حالتهای عملیاتی مستلزم اجرای این دستور در داخل یک مخزن گیت یا یک درخت کاری تحت کنترل یک مخزن گیت هستند، و در غیر این صورت یک خطای مهلک (fatal error) نمایش خواهند داد.
.SH "گزینهها (OPTIONS)"
.SS "حالتهای عملیاتی (Operation Modes)"
.sp
هر یک از این گزینهها باید در ابتدای خط فرمان ظاهر شوند.
.PP
\-\-parseopt
.RS 4
استفاده از
\fIgit rev\-parse\fR
در حالت تجزیه گزینهها (بخش «تجزیه گزینهها (PARSEOPT)» در ادامه را ببینید). این دستور در این حالت میتواند خارج از یک مخزن یا درخت کاری تحت کنترل یک مخزن استفاده شود.
.RE
.PP
\-\-sq\-quote
.RS 4
استفاده از
\fIgit rev\-parse\fR
در حالت نقلقول شل (بخش «نقلقول شل (SQ\-QUOTE)» در ادامه را ببینید). برخلاف گزینه
\fB\-\-sq\fR
در زیر، این حالت فقط نقلقولگذاری را انجام میدهد. هیچ کار دیگری روی ورودی دستور انجام نمیشود. این دستور در این حالت میتواند خارج از یک مخزن یا درخت کاری تحت کنترل یک مخزن استفاده شود.
.RE
.SS "گزینههای parseopt-- (Options for \-\-parseopt)"
.PP
\-\-keep\-dashdash
.RS 4
فقط در حالت
\fB\-\-parseopt\fR
معنا دارد. به تجزیهکننده گزینهها میگوید اولین
\fB\-\-\fR
مشاهدهشده را به جای نادیده گرفتن، بازتاب (echo) دهد.
.RE
.PP
\-\-stop\-at\-non\-option
.RS 4
فقط در حالت
\fB\-\-parseopt\fR
معنا دارد. به تجزیهکننده گزینهها اجازه میدهد در اولین آرگومان غیرگزینهای متوقف شود. از این مورد میتوان برای تجزیه زیردستوراتی که خودشان گزینه دریافت میکنند استفاده کرد.
.RE
.PP
\-\-stuck\-long
.RS 4
فقط در حالت
\fB\-\-parseopt\fR
معنا دارد. گزینهها را در صورت وجود در قالب بلند آنها و به همراه آرگومانهای چسبیده به آنها خروجی میدهد.
.RE
.SS "گزینههای فیلتر کردن (Options for Filtering)"
.PP
\-\-revs\-only
.RS 4
فلگها و پارامترهایی که برای دستور
\fIgit rev\-list\fR
در نظر گرفته نشدهاند را خروجی ندهد.
.RE
.PP
\-\-no\-revs
.RS 4
فلگها و پارامترهایی که برای دستور
\fIgit rev\-list\fR
در نظر گرفته شدهاند را خروجی ندهد.
.RE
.PP
\-\-flags
.RS 4
پارامترهای غیرفلگ را خروجی ندهد.
.RE
.PP
\-\-no\-flags
.RS 4
پارامترهای فلگ را خروجی ندهد.
.RE
.SS "گزینههای خروجی (Options for Output)"
.PP
\-\-default
.RS 4
اگر هیچ پارامتری توسط کاربر مشخص نشده باشد، به جای آن از
\fI\fR
استفاده کند.
.RE
.PP
\-\-prefix
.RS 4
به گونهای رفتار کند که گویی
\fIgit rev\-parse\fR
از زیردایرکتوری
\fI\fR
درخت کاری فراخوانی شده است. هر نام فایل نسبی به گونهای حل میشود که گویی پیشوند
\fI\fR
دارد و به همان شکل چاپ خواهد شد.
.sp
از این مورد میتوان برای تبدیل آرگومانهای یک دستور اجرا شده در یک زیردایرکتوری استفاده کرد تا پس از انتقال به سطح بالای مخزن همچنان قابل استفاده باشند. به عنوان مثال:
.sp
.if n \{\
.RS 4
.\}
.nf
prefix=$(git rev\-parse \-\-show\-prefix)
cd "$(git rev\-parse \-\-show\-toplevel)"
# rev\-parse provides the \-\- needed for \*(Aqset\*(Aq
eval "set $(git rev\-parse \-\-sq \-\-prefix "$prefix" \-\- "$@")"
.fi
.if n \{\
.RE
.\}
.sp
.RE
.PP
\-\-verify
.RS 4
بررسی میکند که دقیقاً یک پارامتر داده شده باشد و بتوان آن را به یک SHA\-1 خام ۲۰ بایتی تبدیل کرد که بتوان از آن برای دسترسی به پایگاه داده اشیاء استفاده نمود. در این صورت، آن را در خروجی استاندارد چاپ میکند؛ در غیر این صورت، خطا میدهد.
.sp
اگر میخواهید مطمئن شوید که خروجی واقعاً نام یک شیء در پایگاه داده اشیاء شما است و/یا میتواند به عنوان یک نوع شیء خاص که نیاز دارید استفاده شود، میتوانید عملگر جداسازی (peeling) به شکل
\fB^\fR{type}
را به پارامتر اضافه کنید. به عنوان مثال،
\fBgit\fR
\fBrev\-parse\fR
"$VAR^{commit}"
اطمینان حاصل میکند که
\fB$VAR\fR
نام یک شیء موجود است که از نوع شبهکامیت (commit\-ish) باشد (یعنی یک کامیت یا یک برچسب یادداشتدار که به یک کامیت اشاره دارد). برای اطمینان از اینکه
\fB$VAR\fR
نام یک شیء موجود از هر نوعی است، میتوان از
\fBgit\fR
\fBrev\-parse\fR
"$VAR^{object}"
استفاده کرد.
.sp
توجه داشته باشید که اگر نامی را از یک منبع نامعتبر اعتبارسنجی میکنید، بهتر است از
\fB\-\-end\-of\-options\fR
استفاده کنید تا آرگومان نام با یک گزینه دیگر اشتباه گرفته نشود.
.RE
.PP
\-q, \-\-quiet
.RS 4
تنها در حالت
\fB\-\-verify\fR
دارای معنا است. در صورتی که اولین آرگومان یک نام شیء معتبر نباشد، پیام خطایی نمایش ندهد؛ بلکه در سکوت با وضعیت غیرصفر خارج شود. مقادیر SHA\-1 برای نامهای معتبر اشیاء در صورت موفقیت در خروجی استاندارد (stdout) چاپ میشوند.
.RE
.PP
\-\-sq
.RS 4
معمولاً خروجی به ازای هر فلگ و پارامتر در یک خط جداگانه نمایش داده میشود. این گزینه خروجی را در یک خط واحد و با نقلقولگذاری مناسب جهت مصرف در شل قالببندی میکند. زمانی که انتظار دارید پارامتر شما شامل فاصلهها و خطوط جدید باشد مفید است (برای مثال هنگام استفاده از pickaxe به شکل
\fB\-S\fR
با
\fIgit diff\-*\fR).
برخلاف گزینه
\fB\-\-sq\-quote\fR،
ورودی دستور همچنان طبق روال معمول تفسیر میشود.
.RE
.PP
\-\-short[=]
.RS 4
همانند
\fB\-\-verify\fR
عمل میکند اما نام شیء را به یک پیشوند یکتا با حداقل
\fBlength\fR
نویسه کوتاه میکند. حداقل طول ۴ است و مقدار پیشفرض آن مقدار مؤثر متغیر پیکربندی
\fBcore\&.abbrev\fR
میباشد (به
\fBgit-config\fR(1)
مراجعه کنید).
.RE
.PP
\-\-not
.RS 4
هنگام نمایش نام اشیاء، پیشوند
\fI^\fR
را به آنها اضافه کند و پیشوند
\fI^\fR
را از نام اشیائی که قبلاً آن را دارند حذف نماید.
.RE
.PP
\-\-abbrev\-ref[=(strict|loose)]
.RS 4
یک نام کوتاه غیرمبهم از نام اشیاء ارائه میدهد. گزینه core\&.warnAmbiguousRefs برای انتخاب حالت مخففسازی دقیق (strict) استفاده میشود.
.RE
.PP
\-\-symbolic
.RS 4
معمولاً نامهای اشیاء در قالب SHA\-1 (با پیشوند احتمالی
\fI^\fR)
خروجی داده میشوند؛ این گزینه باعث میشود آنها در قالبی تا حد امکان نزدیک به ورودی اولیه خروجی داده شوند.
.RE
.PP
\-\-symbolic\-full\-name
.RS 4
این گزینه مشابه \-\-symbolic است، اما ورودیهایی که ارجاع (ref) نیستند را نادیده میگیرد (یعنی نام شاخهها یا برچسبها؛ یا به طور صریحتر قالب تمایزبخش "heads/master" زمانی که میخواهید شاخه "master" را مشخص کنید در حالی که متأسفانه یک برچسب با نام "master" نیز وجود دارد) و آنها را به صورت نام کامل ارجاع نمایش میدهد (مانند "refs/heads/master").
.RE
.PP
\-\-output\-object\-format=(sha1|sha256|storage)
.RS 4
اجازه میدهد شناسههای اشیاء (oid) از هر قالب شیئی که مخزن فعلی پشتیبانی میکند وارد شوند.
.sp
مشخص کردن "sha1" در صورت لزوم تبدیل را انجام داده و یک oid از نوع sha1 برمیگرداند.
.sp
مشخص کردن "sha256" در صورت لزوم تبدیل را انجام داده و یک oid از نوع sha256 برمیگرداند.
.sp
مشخص کردن "storage" در صورت لزوم تبدیل را انجام داده و یک oid کدگذاریشده در الگوریتم هش فضای ذخیرهسازی را برمیگرداند.
.RE
.SS "گزینههای مربوط به اشیاء (Options for Objects)"
.PP
\-\-all
.RS 4
نمایش تمام ارجاعات یافتشده در
\fBrefs/\fR\&.
.RE
.PP
\-\-branches[=], \-\-tags[=], \-\-remotes[=]
.RS 4
به ترتیب نمایش تمام شاخهها، برچسبها، یا شاخههای ردیابی ریموت (یعنی ارجاعات موجود در
\fBrefs/heads\fR،
\fBrefs/tags\fR یا
\fBrefs/remotes\fR).
.sp
اگر یک
\fBpattern\fR
مشخص شده باشد، فقط ارجاعاتی که با تطبیق شل گلوب (shell glob) داده شده مطابقت دارند نمایش داده میشوند. اگر الگو شامل نویسههای گلوبینگ (?,
\fB*\fR، یا [) نباشد، با افزودن
\fB/*\fR
به یک تطبیق پیشوندی تبدیل میشود.
.RE
.PP
\-\-glob=
.RS 4
نمایش تمام ارجاعاتی که با الگوی گلوب شل
\fBpattern\fR
مطابقت دارند. اگر الگو با
\fBrefs/\fR
شروع نشود، این عبارت به صورت خودکار به ابتدای آن اضافه میشود. اگر الگو شامل نویسههای گلوبینگ (?,
\fB*\fR، یا [) نباشد، با افزودن
\fB/*\fR
به یک تطبیق پیشوندی تبدیل میشود.
.RE
.PP
\-\-exclude=
.RS 4
ارجاعاتی را که با
\fI\fR
مطابقت دارند و گزینههای بعدی
\fB\-\-all\fR،
\fB\-\-branches\fR،
\fB\-\-tags\fR،
\fB\-\-remotes\fR یا
\fB\-\-glob\fR
در غیر این صورت در نظر میگرفتند، لحاظ نکند. تکرار این گزینه الگوهای استثنا را تا گزینه بعدی
\fB\-\-all\fR،
\fB\-\-branches\fR،
\fB\-\-tags\fR،
\fB\-\-remotes\fR یا
\fB\-\-glob\fR
انباشته میکند (سایر گزینهها یا آرگومانها الگوهای انباشتهشده را پاک نمیکنند).
.sp
الگوهای داده شده هنگام اعمال بر روی
\fB\-\-branches\fR،
\fB\-\-tags\fR یا
\fB\-\-remotes\fR
نباید با
\fBrefs/heads\fR،
\fBrefs/tags\fR یا
\fBrefs/remotes\fR
شروع شوند و هنگام اعمال بر روی
\fB\-\-glob\fR
یا
\fB\-\-all\fR
باید با
\fBrefs/\fR
شروع شوند. اگر یک
\fI/*\fR
پایانی مد نظر باشد، باید به صراحت قید گردد.
.RE
.PP
\-\-exclude\-hidden=(fetch|receive|uploadpack)
.RS 4
ارجاعاتی را که توسط
\fBgit\-fetch\fR،
\fBgit\-receive\-pack\fR
یا
\fBgit\-upload\-pack\fR
با مراجعه به تنظیمات مربوطه
\fBfetch\&.hideRefs\fR،
\fBreceive\&.hideRefs\fR
یا
\fBuploadpack\&.hideRefs\fR
به همراه
\fBtransfer\&.hideRefs\fR
پنهان میشوند (به
\fBgit-config\fR(1)
مراجعه کنید) شامل نکند. این گزینه بر گزینه شبهارجاع بعدی
\fB\-\-all\fR
یا
\fB\-\-glob\fR
تأثیر میگذارد و پس از پردازش آنها پاک میشود.
.RE
.PP
\-\-disambiguate=
.RS 4
هر شیئی را که نام آن با پیشوند داده شده شروع میشود نمایش دهد. پیشوند باید حداقل ۴ رقم هگزادسیمال طول داشته باشد تا از فهرست شدن تصادفی تکتک اشیاء در مخزن جلوگیری شود.
.RE
.SS "گزینههای مربوط به فایلها (Options for Files)"
.PP
\-\-local\-env\-vars
.RS 4
متغیرهای محیطی GIT_* که محلی برای مخزن هستند را فهرست میکند (مانند GIT_DIR یا GIT_WORK_TREE، اما نه GIT_EDITOR). تنها نام متغیرها فهرست میشوند، نه مقدار آنها، حتی اگر مقداردهی شده باشند.
.RE
.PP
\-\-path\-format=(absolute|relative)
.RS 4
رفتار برخی گزینههای دیگر را کنترل میکند. اگر به صورت absolute مشخص شود، مسیرهای چاپشده توسط آن گزینهها مطلق و استاندارد (canonical) خواهند بود. اگر به صورت relative مشخص شود، در صورت امکان مسیرها نسبت به دایرکتوری کاری فعلی خواهند بود. مقدار پیشفرض بستگی به هر گزینه دارد.
.sp
این گزینه میتواند چندین بار مشخص شود و فقط روی آرگومانهایی که پس از آن در خط فرمان میآیند تأثیر میگذارد؛ یا تا انتهای خط فرمان یا تا نمونه بعدی این گزینه.
.RE
.sp
گزینههای زیر توسط \fB\-\-path\-format\fR تغییر مییابند:
.PP
\-\-git\-dir
.RS 4
نمایش
\fB$GIT_DIR\fR
در صورت تعریف شدن. در غیر این صورت، مسیر دایرکتوری .git را نمایش میدهد. مسیر نمایشدادهشده، در صورت نسبی بودن، نسبت به دایرکتوری کاری فعلی است.
.sp
اگر
\fB$GIT_DIR\fR
تعریف نشده باشد و تشخیص داده نشود که دایرکتوری فعلی درون یک مخزن یا درخت کاری گیت قرار دارد، پیامی در stderr چاپ کرده و با وضعیت غیرصفر خارج میشود.
.RE
.PP
\-\-git\-common\-dir
.RS 4
نمایش
\fB$GIT_COMMON_DIR\fR
در صورت تعریف شدن، در غیر این صورت
\fB$GIT_DIR\fR\&.
.RE
.PP
\-\-resolve\-git\-dir
.RS 4
بررسی میکند که آیا یک مخزن معتبر است یا یک gitfile که به یک مخزن معتبر اشاره دارد، و مکان مخزن را چاپ میکند. اگر یک gitfile باشد، مسیر حلشده به مخزن واقعی چاپ میشود.
.RE
.PP
\-\-git\-path
.RS 4
مسیر "$GIT_DIR/" را حل میکند و سایر متغیرهای جابهجایی مسیر مانند $GIT_OBJECT_DIRECTORY، $GIT_INDEX_FILE و... را در نظر میگیرد. به عنوان مثال، اگر $GIT_OBJECT_DIRECTORY روی /foo/bar تنظیم شده باشد، دستور "git rev\-parse \-\-git\-path objects/abc" مقدار /foo/bar/abc را برمیگرداند.
.RE
.PP
\-\-show\-toplevel
.RS 4
نمایش مسیر (به طور پیشفرض مطلق) دایرکتوری سطح بالای درخت کاری. اگر درخت کاری وجود نداشته باشد، خطا گزارش میدهد.
.RE
.PP
\-\-show\-superproject\-working\-tree
.RS 4
نمایش مسیر مطلق ریشه درخت کاری پروژه مادر (superproject) در صورت وجود، که از مخزن فعلی به عنوان زیرماژول (submodule) خود استفاده میکند. اگر مخزن فعلی به عنوان زیرماژول توسط هیچ پروژهای استفاده نشود، چیزی خروجی نمیدهد.
.RE
.PP
\-\-shared\-index\-path
.RS 4
نمایش مسیر فایل نمایه مشترک (shared index) در حالت نمایه تفکیکشده (split index)، یا در صورت نبودن در حالت split-index، خروجی خالی است.
.RE
.sp
گزینههای زیر تحت تأثیر \fB\-\-path\-format\fR قرار نمیگیرند:
.PP
\-\-absolute\-git\-dir
.RS 4
مانند
\fB\-\-git\-dir\fR
عمل میکند، اما خروجی آن همیشه مسیر مطلق متعارف است.
.RE
.PP
\-\-is\-inside\-git\-dir
.RS 4
هنگامی که دایرکتوری کاری فعلی زیر دایرکتوری مخزن باشد عبارت "true" را چاپ میکند، در غیر این صورت "false".
.RE
.PP
\-\-is\-inside\-work\-tree
.RS 4
هنگامی که دایرکتوری کاری فعلی داخل درخت کاری مخزن باشد عبارت "true" را چاپ میکند، در غیر این صورت "false".
.RE
.PP
\-\-is\-bare\-repository
.RS 4
هنگامی که مخزن یک مخزن خالص (bare) باشد عبارت "true" را چاپ میکند، در غیر این صورت "false".
.RE
.PP
\-\-is\-shallow\-repository
.RS 4
هنگامی که مخزن یک مخزن کمعمق (shallow) باشد عبارت "true" را چاپ میکند، در غیر این صورت "false".
.RE
.PP
\-\-show\-cdup
.RS 4
هنگامی که دستور از یک زیردایرکتوری فراخوانی میشود، مسیر دایرکتوری سطح بالا را نسبت به دایرکتوری فعلی نمایش میدهد (معمولاً توالی از "../"، یا یک رشته خالی).
.RE
.PP
\-\-show\-prefix
.RS 4
هنگامی که دستور از یک زیردایرکتوری فراخوانی میشود، مسیر دایرکتوری فعلی را نسبت به دایرکتوری سطح بالا نمایش میدهد.
.RE
.PP
\-\-show\-object\-format[=(storage|input|output|compat)]
.RS 4
قالب شیء (الگوریتم هش) مورد استفاده مخزن برای ذخیرهسازی در دایرکتوری
\fB\&.git\fR،
ورودی، خروجی، یا سازگاری را نمایش میدهد. برای ورودی، ممکن است چندین الگوریتم که با فاصله از هم جدا شدهاند چاپ شوند. اگر
\fBcompat\fR
درخواست شود و هیچ الگوریتم سازگاری فعال نباشد، یک خط خالی چاپ میکند. در صورت عدم تعیین، مقدار پیشفرض "storage" است.
.RE
.PP
\-\-show\-ref\-format
.RS 4
قالب ذخیرهسازی ارجاعات مورد استفاده برای مخزن را نمایش میدهد.
.RE
.SS "سایر گزینهها (Other Options)"
.PP
\-\-since=, \-\-after=
.RS 4
رشته تاریخ را تجزیه کرده و پارامتر متناظر \-\-max\-age= را برای
\fIgit rev\-list\fR
خروجی میدهد.
.RE
.PP
\-\-until=, \-\-before=
.RS 4
رشته تاریخ را تجزیه کرده و پارامتر متناظر \-\-min\-age= را برای
\fIgit rev\-list\fR
خروجی میدهد.
.RE
.PP
\&...
.RS 4
فلگها و پارامترهایی که باید تجزیه شوند.
.RE
.SH "مشخص کردن ارجاعات (SPECIFYING REVISIONS)"
.sp
یک پارامتر بازبینی (revision) به نام \fI\fR معمولاً، اما نه لزوماً، نام یک شیء کامیت را مشخص میکند. این پارامتر از ساختاری موسوم به نحو \fISHA\-1 گسترشیافته\fR استفاده میکند. در اینجا روشهای گوناگونی برای نگارش نام اشیاء آمده است. مواردی که در نزدیکی انتهای این فهرست ذکر شدهاند، نام درختها و blobهای موجود در یک کامیت را مشخص میکنند.
.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
این سند نحو "خام" (raw) را همانگونه که توسط گیت دیده میشود نشان میدهد. شل و سایر واسطهای کاربری ممکن است برای محافظت از نویسههای خاص و جلوگیری از تفکیک کلمات، به نقلقولگذاری اضافی نیاز داشته باشند.
.sp .5v
.RE
.PP
\fI\fR, e\&.g\&. \fIdae86e1950b1277e545cee180551750029cfe735\fR, \fIdae86e\fR
.RS 4
نام کامل شیء SHA\-1 (رشته هگزادسیمال ۴۰ بایتی)، یا یک زیررشته آغازین که در مخزن یکتا باشد. برای مثال dae86e1950b1277e545cee180551750029cfe735 و dae86e هر دو به یک شیء کامیت اشاره دارند اگر شیء دیگری در مخزن شما وجود نداشته باشد که نام آن با dae86e شروع شود.
.RE
.PP
\fI\fR, e\&.g\&. \fIv1\&.7\&.4\&.2\-679\-g3bee7fb\fR
.RS 4
خروجی حاصل از
\fBgit\fR
\fBdescribe\fR؛
یعنی نزدیکترین برچسب، که اختیاری به دنبال آن یک خط تیره و تعدادی کامیت میآید، و سپس یک خط تیره، یک
\fIg\fR،
و نام شیء به صورت مخفف قرار دارد.
.RE
.PP
\fI\fR, e\&.g\&. \fImaster\fR, \fIheads/master\fR, \fIrefs/heads/master\fR
.RS 4
یک نام ارجاع نمادین. برای مثال
\fImaster\fR
معمولاً به معنای شیء کامیت ارجاع داده شده توسط
\fIrefs/heads/master\fR
است. اگر اتفاقاً هر دو مورد
\fIheads/master\fR
و
\fItags/master\fR
را داشته باشید، میتوانید صراحتاً
\fIheads/master\fR
را قید کنید تا به گیت بگویید منظور شما کدام است. در صورت وجود ابهام، ابهامزدایی از یک
\fI\fR
با انتخاب اولین تطبیق در قواعد زیر انجام میشود:
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 1." 4.2
.\}
اگر
\fI$GIT_DIR/\fR
وجود داشته باشد، منظور شما همان است (این مورد معمولاً فقط برای
\fBHEAD\fR،
\fBFETCH_HEAD\fR،
\fBORIG_HEAD\fR،
\fBMERGE_HEAD\fR،
\fBREBASE_HEAD\fR،
\fBREVERT_HEAD\fR،
\fBCHERRY_PICK_HEAD\fR،
\fBBISECT_HEAD\fR
و
\fBAUTO_MERGE\fR
مفید است)؛
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 2." 4.2
.\}
در غیر این صورت،
\fIrefs/\fR
در صورت وجود؛
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 3.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 3." 4.2
.\}
در غیر این صورت،
\fIrefs/tags/\fR
در صورت وجود؛
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 4.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 4." 4.2
.\}
در غیر این صورت،
\fIrefs/heads/\fR
در صورت وجود؛
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 5.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 5." 4.2
.\}
در غیر این صورت،
\fIrefs/remotes/\fR
در صورت وجود؛
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 6.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 6." 4.2
.\}
در غیر این صورت،
\fIrefs/remotes//HEAD\fR
در صورت وجود.
.RE
.PP
\fBHEAD\fR
.RS 4
کامیتی را مشخص میکند که تغییرات درخت کاری را بر پایه آن بنا نهادهاید.
.RE
.PP
\fBFETCH_HEAD\fR
.RS 4
شاخهای را ثبت میکند که در آخرین فراخوانی
\fBgit\fR
\fBfetch\fR
از یک مخزن دوردست واکشی کردهاید.
.RE
.PP
\fBORIG_HEAD\fR
.RS 4
توسط دستوراتی ایجاد میشود که
\fBHEAD\fR
شما را به شکل بنیادین تغییر میدهند (\fBgit\fR
\fBam\fR،
\fBgit\fR
\fBmerge\fR،
\fBgit\fR
\fBrebase\fR،
\fBgit\fR
\fBreset\fR)،
تا موقعیت
\fBHEAD\fR
قبل از اجرای عملیات آنها را ثبت کند، به طوری که بتوانید به راحتی نوک شاخه را به وضعیت قبل از اجرای آنها بازگردانید.
.RE
.PP
\fBMERGE_HEAD\fR
.RS 4
کامیت(هایی) را ثبت میکند که هنگام اجرای
\fBgit\fR
\fBmerge\fR
در حال ادغام آنها در شاخه خود هستید.
.RE
.PP
\fBREBASE_HEAD\fR
.RS 4
در حین بازنویسی تاریخچه (rebase)، کامیتی را ثبت میکند که عملیات در حال حاضر در آن متوقف شده است، خواه به دلیل تعارضها و خواه به دلیل دستور
\fBedit\fR
در یک ریبیس تعاملی.
.RE
.PP
\fBREVERT_HEAD\fR
.RS 4
کامیتی را ثبت میکند که هنگام اجرای
\fBgit\fR
\fBrevert\fR
در حال برگرداندن آن هستید.
.RE
.PP
\fBCHERRY_PICK_HEAD\fR
.RS 4
کامیتی را ثبت میکند که هنگام اجرای
\fBgit\fR
\fBcherry\-pick\fR
در حال گلچین کردن آن هستید.
.RE
.PP
\fBBISECT_HEAD\fR
.RS 4
کامیت فعلی را ثبت میکند که هنگام اجرای
\fBgit\fR
\fBbisect\fR
\fB\-\-no\-checkout\fR
باید مورد آزمایش قرار گیرد.
.RE
.PP
\fBAUTO_MERGE\fR
.RS 4
یک شیء درخت متناظر با وضعیتی را ثبت میکند که استراتژی ادغام
\fIort\fR
هنگام مواجهه عملیات ادغام با تعارضها، در درخت کاری نوشته است.
.RE
.sp
توجه داشته باشید که هر یک از موارد
\fIrefs/*\fR
بالا ممکن است از دایرکتوری
\fB$GIT_DIR/refs\fR
یا از فایل
\fB$GIT_DIR/packed\-refs\fR
بیایند. با وجودی که کدگذاری نام ارجاع تعییننشده است، UTF\-8 ترجیح داده میشود زیرا برخی از پردازشهای خروجی ممکن است نام ارجاعات را به صورت UTF\-8 فرض کنند.
.RE
.PP
\fI@\fR
.RS 4
\fI@\fR
به تنهایی میانبری برای
\fBHEAD\fR
است.
.RE
.PP
\fI[]@{}\fR, e\&.g\&. \fImaster@{yesterday}\fR, \fIHEAD@{5 minutes ago}\fR
.RS 4
یک ارجاع که به دنبال آن پسوند
\fI@\fR
به همراه یک مشخصه تاریخ محصور در یک جفت آکولاد (مانند
\fI{yesterday}\fR،
\fI{1 month 2 weeks 3 days 1 hour 1 second ago}\fR
یا
\fI{1979\-02\-26 18:30:00}\fR)
میآید، مقدار ارجاع را در یک نقطه زمانی پیشین مشخص میکند. این پسوند تنها میتواند بلافاصله پس از یک نام ارجاع استفاده شود و ارجاع باید لاگ موجود داشته باشد (\fI$GIT_DIR/logs/[\fR).
توجه داشته باشید که این مورد وضعیت ارجاع
\fBمحلی\fR
شما را در یک زمان مشخص جستجو میکند؛ برای مثال، آنچه که در شاخه محلی
\fImaster\fR
شما در هفته گذشته وجود داشته است. اگر میخواهید کامیتهای انجامشده در زمانهای خاصی را مشاهده کنید، گزینههای
\fB\-\-since\fR
و
\fB\-\-until\fR
را ببینید.
.RE
.PP
\fI@{}\fR, e\&.g\&. \fImaster@{1}\fR
.RS 4
یک ارجاع که به دنبال آن پسوند
\fI@\fR
به همراه یک مشخصه ترتیبی محصور در یک جفت آکولاد (مانند
\fI{1}\fR،
\fI{15}\fR)
میآید، n\-امین مقدار پیشین آن ارجاع را مشخص میکند. برای مثال
\fImaster@{1}\fR
مقدار بلافاصله قبل از
\fImaster\fR
است، در حالی که
\fImaster@{5}\fR
مقدار پنجمین مرتبه پیشین
\fImaster\fR
است. این پسوند تنها میتواند بلافاصله پس از یک نام ارجاع استفاده شود و ارجاع باید لاگ موجود داشته باشد (\fI$GIT_DIR/logs/\fR).
.RE
.PP
\fI@{}\fR, e\&.g\&. \fI@{1}\fR
.RS 4
میتوانید از ساختار
\fI@\fR
با بخش ارجاع خالی برای دستیابی به یک مدخل reflog از شاخه فعلی استفاده کنید. برای مثال، اگر در شاخه
\fIblabla\fR
هستید،
\fI@{1}\fR
همان معنای
\fIblabla@{1}\fR
را دارد.
.RE
.PP
\fI@{\-}\fR, e\&.g\&. \fI@{\-1}\fR
.RS 4
ساختار
\fI@{\-}\fR
به معنای \-امین شاخه/کامیتی است که پیش از شاخه/کامیت فعلی checkout شده است.
.RE
.PP
\fI[]@{upstream}\fR, e\&.g\&. \fImaster@{upstream}\fR, \fI@{u}\fR
.RS 4
یک شاخه B ممکن است طوری تنظیم شده باشد که بر روی یک شاخه X (پیکربندیشده با
\fBbranch\&.\fR\fI\fR\fB\&.merge\fR)
در یک مخزن دوردست R (پیکربندیشده با شاخه X برگرفته از مخزن دوردست R، که معمولاً در
\fBrefs/remotes/R/X\fR
یافت میشود) ساخته شود.
.RE
.PP
\fI[]@{push}\fR, e\&.g\&. \fImaster@{push}\fR, \fI@{push}\fR
.RS 4
پسوند
\fI@{push}\fR
شاخهای را گزارش میدهد که اگر در زمان فعال بودن
\fBbranchname\fR
(یا
\fBHEAD\fR
فعلی در صورتی که هیچ نام شاخهای مشخص نشده باشد) دستور
\fBgit\fR
\fBpush\fR
اجرا میشد، «به آنجا پوش میکردیم». همانند
\fI@{upstream}\fR،
ما شاخه ردیابی ریموت متناظر با آن شاخه را در مخزن دوردست گزارش میدهیم.
.sp
در اینجا مثالی برای شفافتر شدن موضوع آمده است:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git config push\&.default current
$ git config remote\&.pushdefault myfork
$ git switch \-c mybranch origin/master
$ git rev\-parse \-\-symbolic\-full\-name @{upstream}
refs/remotes/origin/master
$ git rev\-parse \-\-symbolic\-full\-name @{push}
refs/remotes/myfork/mybranch
.fi
.if n \{\
.RE
.\}
.sp
توجه داشته باشید که در این مثال یک جریان کاری مثلثی (triangular workflow) تنظیم کردهایم، که در آن از یک مکان pull میکنیم و به مکان دیگری push مینماییم. در یک جریان کاری غیرمثلثی،
\fI@{push}\fR
همانند
\fI@{upstream}\fR
است و نیازی به آن نیست.
.sp
این پسوند با حروف بزرگ نیز پذیرفته میشود و صرفنظر از کوچک یا بزرگ بودن حروف، معنای یکسانی دارد.
.RE
.PP
\fI^[]\fR, e\&.g\&. \fIHEAD^, v1\&.5\&.1^0\fR
.RS 4
پسوند
\fI^\fR
برای یک پارامتر بازبینی، به معنای اولین والد آن شیء کامیت است.
\fI^\fR
به معنای \-امین والد است (یعنی
\fI^\fR
معادل
\fI^1\fR
است). به عنوان یک قاعده خاص،
\fI^0\fR
به معنای خود کامیت است و زمانی استفاده میشود که
\fI\fR
نام شیء یک شیء برچسب باشد که به یک شیء کامیت اشاره دارد.
.RE
.PP
\fI~[]\fR, e\&.g\&. \fIHEAD~, master~3\fR
.RS 4
پسوند
\fI~\fR
برای یک پارامتر بازبینی به معنای اولین والد آن شیء کامیت است. پسوند
\fI~\fR
برای یک پارامتر بازبینی به معنای شیء کامیتی است که جد نسل \-ام شیء کامیت نامبرده با دنبال کردن تنها والدین اول است. یعنی
\fI~3\fR
معادل
\fI^^^\fR
است که آن نیز معادل
\fI^1^1^1\fR
میباشد. برای مشاهده نمایشی از کاربرد این قالب، بخش زیر را ببینید.
.RE
.PP
\fI^{}\fR, e\&.g\&. \fIv0\&.99\&.8^{commit}\fR
.RS 4
پسوند
\fI^\fR
که به دنبال آن یک نام نوع شیء محصور در جفت آکولاد آمده است، به معنای بازگشایی ارجاع (dereference) شیء در
\fI\fR
به صورت بازگشتی است تا زمانی که شیئی از نوع
\fI\fR
یافت شود یا دیگر نتوان ارجاع شیء را بازگشایی کرد (که در این حالت خطا میدهد). برای مثال، اگر
\fI\fR
یک commit\-ish باشد،
\fI^{commit}\fR
شیء کامیت متناظر را توصیف میکند. به همین ترتیب، اگر
\fI\fR
یک tree\-ish باشد،
\fI^{tree}\fR
شیء درخت متناظر را توصیف میکند.
\fI^0\fR
حالت خلاصه
\fI^{commit}\fR
است.
.sp
از
\fI^{object}\fR
میتوان برای اطمینان از اینکه
\fI\fR
نام شیئی موجود را مشخص میکند استفاده کرد، بدون اینکه نیازی باشد
\fI\fR
یک برچسب باشد و بدون بازگشایی ارجاع
\fI\fR؛
زیرا یک برچسب از قبل خود یک شیء است، و حتی یک بار هم نیازی به بازگشایی ارجاع آن برای رسیدن به یک شیء وجود ندارد.
.sp
از
\fI^{tag}\fR
میتوان برای اطمینان از اینکه
\fI\fR
یک شیء برچسب موجود را مشخص میکند استفاده نمود.
.RE
.PP
\fI^{}\fR, e\&.g\&. \fIv0\&.99\&.8^{}\fR
.RS 4
پسوند
\fI^\fR
که به دنبال آن یک جفت آکولاد خالی میآید به این معناست که شیء میتواند یک برچسب باشد، و برچسب را به صورت بازگشتی بازگشایی میکند تا زمانی که یک شیء غیربرچسب یافت شود.
.RE
.PP
\fI^{/}\fR, e\&.g\&. \fIHEAD^{/fix nasty bug}\fR
.RS 4
پسوند
\fI^\fR
برای یک پارامتر بازبینی، که به دنبال آن یک جفت آکولاد حاوی متنی با پیشوند اسلش میآید، همانند نحو
\fI:/fix nasty bug\fR
در زیر است با این تفاوت که جوانترین کامیت منطبق را که از
\fI\fR
قبل از
\fI^\fR
قابل دسترسی است برمیگرداند.
.RE
.PP
\fI:/\fR, e\&.g\&. \fI:/fix nasty bug\fR
.RS 4
یک دونقطه، به دنبال آن یک اسلش، و به دنبال آن یک متن، کامیتی را مشخص میکند که پیام کامیت آن با عبارت باقاعده (regular expression) داده شده مطابقت دارد. این نام جوانترین کامیت منطبق را برمیگرداند که از هر ارجاعی، از جمله HEAD، قابل دسترسی باشد. عبارت باقاعده میتواند با هر بخشی از پیام کامیت مطابقت داشته باشد. برای مطابقت با پیامهایی که با یک رشته خاص شروع میشوند، میتوان برای مثال از
\fI:/^foo\fR
استفاده کرد. توالی خاص
\fI:/!\fR
برای تغییردهندههای آنچه که مطابقت داده میشود رزرو شده است.
\fI:/!\-foo\fR
یک مطابقت منفی انجام میدهد، در حالی که
\fI:/!!foo\fR
با نویسه واقعی
\fI!\fR
که به دنبال آن
\fIfoo\fR
آمده مطابقت دارد. هر توالی دیگری که با
\fI:/!\fR
شروع شود فعلاً رزرو شده است. بسته به متن داده شده، قواعد تفکیک کلمات شل ممکن است به نقلقولگذاری اضافی نیاز داشته باشد.
.RE
.PP
\fI:\fR, e\&.g\&. \fIHEAD:README\fR, \fImaster:\&./README\fR
.RS 4
پسوند
\fI:\fR
به دنبال یک مسیر، نام blob یا درختی را در مسیر داده شده در شیء شبهدرخت (tree\-ish) مشخصشده توسط بخش قبل از دونقطه تعیین میکند. مسیری که با
\fI\&./\fR
یا
\fI\&.\&./\fR
شروع میشود نسبت به دایرکتوری کاری فعلی است. مسیر داده شده طوری تبدیل میشود که نسبت به دایرکتوری ریشه درخت کاری باشد. این مورد بیش از همه برای آدرسدهی یک blob یا درخت از یک کامیت یا درختی که ساختار درختی مشابهی با درخت کاری دارد مفید است.
.RE
.PP
\fI:[:]\fR, e\&.g\&. \fI:0:README\fR, \fI:README\fR
.RS 4
یک دونقطه، اختیاری با یک شماره مرحله (stage number بین 0 تا 3) و یک دونقطه، که به دنبال آن یک مسیر میآید، نام یک شیء blob در نمایه (index) در مسیر داده شده را مشخص میکند. عدم وجود شماره مرحله (و دونقطهای که به دنبال آن میآید) یک مدخل مرحله 0 را مشخص میکند. در طول یک ادغام، مرحله 1 نیای مشترک، مرحله 2 نسخه شاخه هدف (معمولاً شاخه فعلی)، و مرحله 3 نسخهای از شاخهای است که در حال ادغام شدن میباشد.
.RE
.sp
در اینجا تصویری از جان لوئلیگر (Jon Loeliger) آمده است. هر دو گره کامیت B و C والدین گره کامیت A هستند. کامیتهای والد از چپ به راست مرتب شدهاند.
.sp
.if n \{\
.RS 4
.\}
.nf
G H I J
\e / \e /
D E F
\e | / \e
\e | / |
\e|/ |
B C
\e /
\e /
A
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
A = = A^0
B = A^ = A^1 = A~1
C = = A^2
D = A^^ = A^1^1 = A~2
E = B^2 = A^^2
F = B^3 = A^^3
G = A^^^ = A^1^1^1 = A~3
H = D^2 = B^^2 = A^^^2 = A~2^2
I = F^ = B^3^ = A^^3^
J = F^2 = B^3^2 = A^^3^2
.fi
.if n \{\
.RE
.\}
.SH "مشخص کردن محدودهها (SPECIFYING RANGES)"
.sp
دستورات پیمایش تاریخچه مانند \fBgit\fR \fBlog\fR بر روی مجموعهای از کامیتها عمل میکنند، نه فقط یک کامیت منفرد.
.sp
برای این دستورات، مشخص کردن یک بازبینی منفرد، با استفاده از نشانهگذاری توصیفشده در بخش پیشین، به معنای مجموعه کامیتهای \fBقابل دسترسی\fR (reachable) از کامیت داده شده است.
.sp
مشخص کردن چندین بازبینی به معنای مجموعه کامیتهای قابل دسترسی از هر یک از کامیتهای داده شده است.
.sp
مجموعه قابل دسترسی یک کامیت، خود کامیت و کامیتهای موجود در زنجیره تبار (ancestry chain) آن است.
.sp
چندین نشانهگذاری برای مشخص کردن مجموعهای از کامیتهای مرتبط (که "محدوده بازبینی" یا revision range نامیده میشود) وجود دارد، که در ادامه نشان داده شده است.
.SS "استثنا کردن کامیتها (Commit Exclusions)"
.PP
نشانهگذاری \fI^\fR (هشتک / caret)
.RS 4
برای مستثنی کردن کامیتهای قابل دسترسی از یک کامیت، از نشانهگذاری پیشوند
\fI^\fR
استفاده میشود. برای مثال
\fI^r1 r2\fR
به معنای کامیتهای قابل دسترسی از
\fIr2\fR
به استثنای آنهایی است که از
\fIr1\fR
قابل دسترسی هستند (یعنی
\fIr1\fR
و نیاکان آن).
.RE
.SS "نشانهگذاریهای محدوده نقطهای (Dotted Range Notations)"
.PP
نشانهگذاری محدوده \fI\&.\&.\fR (دو نقطه)
.RS 4
عمل مجموعهای
\fI^r1 r2\fR
آنچنان پرکاربرد است که یک حالت خلاصه برای آن وجود دارد. هنگامی که دو کامیت
\fIr1\fR
و
\fIr2\fR
را دارید (که بر اساس نحو توضیح داده شده در بخش «مشخص کردن ارجاعات (SPECIFYING REVISIONS)» در بالا نامگذاری شدهاند)، میتوانید کامیتهایی را که از r2 قابل دسترسی هستند به جز آنهایی که از r1 قابل دسترسی هستند با
\fI^r1 r2\fR
درخواست کنید و میتوان آن را به شکل
\fIr1\&.\&.r2\fR
نوشت.
.RE
.PP
نشانهگذاری تفاضل متقارن \fI\&.\&.\&.\fR (سه نقطه)
.RS 4
یک نشانهگذاری مشابه به شکل
\fIr1\&.\&.\&.r2\fR
تفاضل متقارن (symmetric difference) بین
\fIr1\fR
و
\fIr2\fR
نامیده میشود و به صورت
\fIr1 r2 \-\-not $(git merge\-base \-\-all r1 r2)\fR
تعریف میشود. این مجموعه شامل کامیتهایی است که از یکی از دو کامیت
\fIr1\fR
(سمت چپ) یا
\fIr2\fR
(سمت راست) قابل دسترسی هستند، اما نه از هر دوی آنها.
.RE
.sp
در این دو نشانهگذاری مختصر، میتوانید یک سر محدوده را حذف کنید تا به طور پیشفرض HEAD در نظر گرفته شود. برای مثال، \fIorigin\&.\&.\fR حالت خلاصه \fIorigin\&.\&.HEAD\fR است و این سؤال را مطرح میکند که "از زمانی که از شاخه origin منشعب شدهام چه کارهایی انجام دادهام؟" به طور مشابه، \fI\&.\&.origin\fR حالت خلاصه \fIHEAD\&.\&.origin\fR است و این سؤال را مطرح میکند که "مخزن origin از زمان انشعاب من چه کارهایی انجام داده است؟" توجه داشته باشید که \fI\&.\&.\fR به معنای \fIHEAD\&.\&.HEAD\fR خواهد بود که یک محدوده خالی است که هم از HEAD قابل دسترسی و هم غیرقابل دسترسی است.
.sp
دستوراتی که به طور خاص برای دریافت دو محدوده متمایز طراحی شدهاند (مانند "git range\-diff R1 R2" برای مقایسه دو محدوده) وجود دارند، اما آنها استثنا هستند. مگر در مواردی که خلاف آن قید شده باشد، تمام دستورات "git" که بر روی مجموعهای از کامیتها عمل میکنند، بر روی یک محدوده بازبینی منفرد کار میکنند. به عبارت دیگر، نوشتن دو "نشانهگذاری محدوده دو نقطهای" در کنار یکدیگر، برای مثال:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git log A\&.\&.B C\&.\&.D
.fi
.if n \{\
.RE
.\}
.sp
برای اکثر دستورات دو محدوده بازبینی را مشخص \fBنمیکند\fR. در عوض، یک مجموعه متصل منفرد از کامیتها را مشخص میسازد، یعنی آنهایی که از B یا D قابل دسترسی هستند اما نه از A و نه از C قابل دسترسی نمیباشند. در یک تاریخچه خطی مانند زیر:
.sp
.if n \{\
.RS 4
.\}
.nf
\-\-\-A\-\-\-B\-\-\-o\-\-\-o\-\-\-C\-\-\-D
.fi
.if n \{\
.RE
.\}
.sp
از آنجا که A و B از C قابل دسترسی هستند، محدوده بازبینی مشخصشده توسط این دو محدوده نقطهای یک کامیت منفرد D است.
.SS "سایر نشانهگذاریهای مختصر والد ^ (Other ^ Parent Shorthand Notations)"
.sp
سه حالت خلاصه دیگر وجود دارند که به ویژه برای کامیتهای ادغام مفید هستند و برای نامگذاری مجموعهای به کار میروند که توسط یک کامیت و کامیتهای والد آن تشکیل میشود.
.sp
نشانهگذاری \fIr1^@\fR به معنای تمام والدین \fIr1\fR است.
.sp
نشانهگذاری \fIr1^!\fR شامل کامیت \fIr1\fR است اما تمام والدین آن را مستثنی میکند. این نشانهگذاری به تنهایی کامیت منفرد \fIr1\fR را نشان میدهد.
.sp
نشانهگذاری \fI^\-[]\fR شامل \fI\fR است اما والد \-ام را مستثنی میکند (یعنی خلاصهای برای \fI^\&.\&.\fR)، که در صورت عدم قید، \fI\fR = 1 خواهد بود. این مورد معمولاً برای کامیتهای ادغام مفید است که در آنها میتوانید به سادگی \fI^\-\fR را ارسال کنید تا تمام کامیتهای موجود در شاخهای را که در کامیت ادغام \fI\fR ادغام شده است (شامل خود \fI\fR) دریافت کنید.
.sp
در حالی که \fI^\fR در مورد مشخص کردن یک والد کامیت منفرد بود، این سه نشانهگذاری والدین آن را نیز در نظر میگیرند. برای مثال میتوانید بنویسید \fIHEAD^2^@\fR، اما نمیتوانید بگویید \fIHEAD^@^2\fR.
.SH "خلاصه محدودههای ارجاع (REVISION RANGE SUMMARY)"
.PP
\fI\fR
.RS 4
شامل کامیتهایی است که از قابل دسترسی هستند (یعنی و نیاکان آن).
.RE
.PP
\fI^\fR
.RS 4
مستثنی کردن کامیتهایی که از قابل دسترسی هستند (یعنی و نیاکان آن).
.RE
.PP
\fI\&.\&.\fR
.RS 4
شامل کامیتهایی است که از قابل دسترسی هستند اما آنهایی را که از قابل دسترسی میباشند مستثنی میکند. هنگامی که هر یک از یا حذف شوند، پیشفرض
\fBHEAD\fR
خواهد بود.
.RE
.PP
\fI\&.\&.\&.\fR
.RS 4
شامل کامیتهایی است که از هر یک از یا قابل دسترسی هستند اما آنهایی را که از هر دوی آنها قابل دسترسی میباشند مستثنی میکند. هنگامی که هر یک از یا حذف شوند، پیشفرض
\fBHEAD\fR
خواهد بود.
.RE
.PP
\fI^@\fR, e\&.g\&. \fIHEAD^@\fR
.RS 4
یک پسوند
\fI^\fR
که به دنبال آن یک علامت at میآید، همانند فهرست کردن تمام والدین
\fI\fR
است (به این معنا که هر چیزی را که از والدین آن قابل دسترسی باشد شامل میشود، اما خود کامیت را شامل نمیگردد).
.RE
.PP
\fI^!\fR, e\&.g\&. \fIHEAD^!\fR
.RS 4
یک پسوند
\fI^\fR
که به دنبال آن یک علامت تعجب میآید، همانند دادن کامیت
\fI\fR
و تمام والدین آن با پیشوند
\fI^\fR
برای مستثنی کردن آنها (و نیاکانشان) است.
.RE
.PP
\fI^\-\fR, e\&.g\&. \fIHEAD^\-, HEAD^\-2\fR
.RS 4
معادل
\fI^\&.\&.\fR
است، که در صورت تعیین نشدن،
\fI\fR
برابر ۱ میباشد.
.RE
.sp
در اینجا چند مثال با استفاده از تصویر لوئلیگر در بالا آورده شده است، که در آن هر مرحله از بسط نشانهگذاری و انتخاب کامیتها با دقت توضیح داده شده است:
.sp
.if n \{\
.RS 4
.\}
.nf
Args Expanded arguments Selected commits
D G H D
D F G H I J D F
^G D H D
^D B E I J F B
^D B C E I J F B C
C I J F C
B\&.\&.C = ^B C C
B\&.\&.\&.C = B ^F C G H D E B C
B^\- = B^\&.\&.B
= ^B^1 B E I J F B
C^@ = C^1
= F I J F
B^@ = B^1 B^2 B^3
= D E F D G H E F I J
C^! = C ^C^@
= C ^C^1
= C ^F C
B^! = B ^B^@
= B ^B^1 ^B^2 ^B^3
= B ^D ^E ^F B
F^! D = F ^I ^J D G H D F
.fi
.if n \{\
.RE
.\}
.SH "تجزیه گزینهها (PARSEOPT)"
.sp
در حالت \fB\-\-parseopt\fR، دستور \fIgit rev\-parse\fR به یکدستسازی و پردازش گزینهها کمک میکند تا امکاناتی مشابه با توابع توکار C (بخش builtin) را به اسکریپتهای شل بیاورد. این دستور مانند یک نرمالساز گزینهها عمل میکند (برای مثال مقادیر تجمیعشده چند سوییچ را تفکیک میکند)، تا حدی شبیه به عملکرد \fBgetopt\fR(\fB1\fR).
.sp
این دستور در ورودی استاندارد مشخصات گزینههایی را که باید تجزیه و درک شوند دریافت میکند، و در خروجی استاندارد رشتهای مناسب برای دستور \fBeval\fR در \fBsh\fR(\fB1\fR) بازتاب (echo) میدهد تا آرگومانها را با آرگومانهای نرمالشده جایگزین کند. در صورت بروز خطا، راهنمای نحوه استفاده (usage) را در خروجی خطای استاندارد نمایش میدهد و با کد خروج ۱۲۹ پایان مییابد.
.sp
یادداشت: هنگام ارسال نتیجه به \fBeval\fR مطمئن شوید که آن را نقلقولگذاری میکنید. برای مشاهده یک نمونه به ادامه متن مراجعه فرمایید.
.SS "قالب ورودی (Input Format)"
.sp
قالب ورودی \fIgit rev\-parse \-\-parseopt\fR کاملاً مبتنی بر متن است. این قالب دارای دو بخش است که توسط خطی که تنها حاوی \fB\-\-\fR است از یکدیگر جدا میشوند. خطوط قبل از جداکننده (باید یک یا چند خط باشند) برای متن راهنمای استفاده به کار میروند. خطوط پس از جداکننده، گزینهها را شرح میدهند.
.sp
هر خط از گزینهها دارای این قالب است:
.sp
.if n \{\
.RS 4
.\}
.nf
*? SP+ help LF
.fi
.if n \{\
.RE
.\}
.sp
.PP
\fI\fR
.RS 4
قالب آن نویسه گزینه کوتاه، و سپس نام گزینه بلند است که با یک کاما از هم جدا شدهاند. وجود هر دو بخش الزامی نیست، اگرچه حداقل یکی از آنها ضروری است. نباید شامل هیچیک از نویسههای
\fI\fR
باشد.
\fBh\fR,help،
\fBdry\-run\fR
و
\fBf\fR
نمونههایی از
\fI\fR
صحیح هستند.
.RE
.PP
\fI\fR
.RS 4
فلگهای
\fI\fR
یکی از موارد
\fB*\fR،
\fB=\fR، ? یا ! هستند.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
در صورتی که گزینه آرگومان دریافت میکند، از
\fB=\fR
استفاده کنید.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
از ? برای این منظور استفاده کنید که گزینه یک آرگومان اختیاری دریافت میکند. احتمالاً برای تجزیه غیرمبهم آرگومان اختیاری مایل به استفاده از حالت
\fB\-\-stuck\-long\fR
خواهید بود.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
از
\fB*\fR
برای نشان دادن اینکه این گزینه نباید در متن راهنمای ایجادشده برای آرگومان
\fB\-h\fR
فهرست شود استفاده کنید. این گزینه برای
\fB\-\-help\-all\fR
همانطور که در
\fBgitcli\fR(7)
مستند شده است، نمایش داده میشود.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
از ! برای عدم دسترسیپذیری گزینه بلند منفی متناظر استفاده کنید.
.RE
.RE
.PP
\fI\fR
.RS 4
\fI\fR،
در صورت تعیین، به عنوان نام آرگومان در خروجی راهنما برای گزینههایی که آرگومان دریافت میکنند استفاده میشود.
\fI\fR
با اولین فاصله پایان مییابد. مرسوم است که برای تفکیک کلمات در یک عبارت راهنمای چندکلمهای آرگومان از خط تیره استفاده شود.
.RE
.sp
باقیمانده خط، پس از حذف فاصلههای اضافی، به عنوان متن راهنمای مربوط به آن گزینه استفاده میشود.
.sp
خطوط خالی نادیده گرفته میشوند، و خطوطی که با این مشخصات مطابقت ندارند به عنوان سربرگ گروههای گزینهها استفاده میشوند (برای ایجاد عمدی چنین خطوطی، خط را با یک فاصله آغاز کنید).
.SS "مثال (Example)"
.sp
.if n \{\
.RS 4
.\}
.nf
OPTS_SPEC="\e
some\-command [] \&.\&.\&.
some\-command does foo and bar!
\-\-
h,help! show the help
foo some nifty option \-\-foo
bar= some cool option \-\-bar with an argument
baz=arg another cool option \-\-baz with a named argument
qux?path qux may take a path argument but has meaning by itself
An option group Header
C? option C with an optional argument"
eval "$(echo "$OPTS_SPEC" | git rev\-parse \-\-parseopt \-\- "$@" || echo exit $?)"
.fi
.if n \{\
.RE
.\}
.sp
.SS "متن راهنما (Usage text)"
.sp
هنگامی که در مثال بالا "$@" برابر \fB\-h\fR یا \fB\-\-help\fR باشد، متن راهنمای زیر نمایش داده خواهد شد:
.sp
.if n \{\
.RS 4
.\}
.nf
usage: some\-command [] \&.\&.\&.
some\-command does foo and bar!
\-h, \-\-help show the help
\-\-[no\-]foo some nifty option \-\-foo
\-\-[no\-]bar \&.\&.\&. some cool option \-\-bar with an argument
\-\-[no\-]baz another cool option \-\-baz with a named argument
\-\-[no\-]qux[=] qux may take a path argument but has meaning by itself
An option group Header
\-C[\&.\&.\&.] option C with an optional argument
.fi
.if n \{\
.RE
.\}
.sp
.SH "نقلقول شل (SQ\-QUOTE)"
.sp
در حالت \fB\-\-sq\-quote\fR، دستور \fIgit rev\-parse\fR یک خط واحد مناسب برای دستور \fBeval\fR در \fBsh\fR(\fB1\fR) را در خروجی استاندارد بازتاب میدهد. این خط از طریق نرمالسازی آرگومانهای بعد از \fB\-\-sq\-quote\fR ساخته میشود. هیچ کاری به جز نقلقولگذاری آرگومانها انجام نمیشود.
.sp
اگر میخواهید ورودی دستور پیش از نقلقولگذاری در شل همچنان طبق معمول توسط \fIgit rev\-parse\fR تفسیر شود، گزینه \fB\-\-sq\fR را ببینید.
.SS "مثال (Example)"
.sp
.if n \{\
.RS 4
.\}
.nf
$ cat >your\-git\-script\&.sh <<\eEOF
#!/bin/sh
args=$(git rev\-parse \-\-sq\-quote "$@") # quote user\-supplied arguments
command="git frotz \-n24 $args" # and use it inside a handcrafted
# command line
eval "$command"
EOF
$ sh your\-git\-script\&.sh "a b\*(Aqc"
.fi
.if n \{\
.RE
.\}
.sp
.SH "مثالها (EXAMPLES)"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
چاپ نام شیء کامیت فعلی:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git rev\-parse \-\-verify HEAD
.fi
.if n \{\
.RE
.\}
.sp
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
چاپ نام شیء کامیت از روی ارجاع موجود در متغیر شل $REV:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git rev\-parse \-\-verify \-\-end\-of\-options $REV^{commit}
.fi
.if n \{\
.RE
.\}
.sp
در صورتی که $REV خالی باشد یا یک ارجاع معتبر نباشد، با خطا مواجه خواهد شد.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
مشابه بالا:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git rev\-parse \-\-default master \-\-verify \-\-end\-of\-options $REV
.fi
.if n \{\
.RE
.\}
.sp
اما اگر $REV خالی باشد، نام شیء کامیت از master چاپ خواهد شد.
.RE
.SH "همچنین ببینید (SEE ALSO)"
.sp
\fBgit\fR(1)،
\fBgit-rev-list\fR(1)،
\fBgit-check-ref-format\fR(1)
.SH "گیت (GIT)"
.sp
بخشی از مجموعه \fBgit\fR(1)]