GIT-NAME-REV(1) Git Manual GIT-NAME-REV(1)

git-name-rev - یافتن نام‌های قابل فهم برای ارجاعات مشخص‌شده

git name-rev [--tags] [--refs=<pattern>]
               ( --all | --annotate-stdin | <commit-ish>... )

نام‌های نمادین قابل‌فهم برای انسان را برای بازنگری‌های ارائه‌شده در هر قالبی که توسط git rev-parse قابل تجزیه باشد، پیدا می‌کند.

--tags

به جای استفاده از نام شاخه‌ها، فقط از تگ‌ها برای نام‌گذاری کامیت‌ها استفاده می‌کند.

--refs=<pattern>

تنها از ارجاعاتی (refs) استفاده می‌کند که نام آن‌ها با الگوی پوسته داده‌شده مطابقت داشته باشد. این الگو می‌تواند نام یک شاخه، نام یک تگ یا یک نام ارجاع کاملاً واجد شرایط (fully qualified) باشد. اگر چند بار مشخص شود، از ارجاعاتی استفاده می‌کند که نام آن‌ها با هر یک از الگوهای پوسته ارائه‌شده همخوانی داشته باشد. برای پاک کردن تمام الگوهای ارجاع قبلی، از --no-refs استفاده کنید.

--exclude=<pattern>

از هیچ ارجاعی که نام آن با الگوی پوسته داده‌شده مطابقت داشته باشد، استفاده نمی‌کند. الگو می‌تواند نام یک شاخه، نام یک تگ یا نام ارجاع کاملاً واجد شرایط باشد. در صورت مشخص شدن چندباره، ارجاعی که با هر یک از الگوهای ارائه‌شده مطابقت داشته باشد مستثنی خواهد شد. هنگام استفاده هم‌زمان با --refs، یک ارجاع تنها زمانی به عنوان منطبق در نظر گرفته می‌شود که حداقل با یکی از الگوهای --refs مطابقت داشته و با هیچ‌یک از الگوهای --exclude تطابق نداشته باشد. برای پاک کردن فهرست الگوهای استثنا، از --no-exclude استفاده کنید.

--all

تمام کامیت‌های قابل دسترسی از همه ارجاعات را فهرست می‌کند.

--annotate-stdin

ورودی استاندارد (stdin) را با جایگزین کردن تمام مقادیر هگزادسیمال ۴۰ نویسه‌ای SHA-1 (مثلاً $hex) با "$hex ($rev_name)" دگرگون می‌کند. هنگام استفاده همراه با --name-only، مقدار "$rev_name" را بدون ذکر $hex جایگزین می‌کند. این گزینه در نسخه‌های قدیمی‌تر گیت --stdin نامیده می‌شد.

به عنوان مثال:

$ cat sample.txt
An abbreviated revision 2ae0a9cb82 will not be substituted.
The full name after substitution is 2ae0a9cb8298185a94e5998086f380a355dd8907,
while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad
$ git name-rev --annotate-stdin <sample.txt
An abbreviated revision 2ae0a9cb82 will not be substituted.
The full name after substitution is 2ae0a9cb8298185a94e5998086f380a355dd8907 (master),
while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad
$ git name-rev --name-only --annotate-stdin <sample.txt
An abbreviated revision 2ae0a9cb82 will not be substituted.
The full name after substitution is master,
while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad

--name-only

به جای چاپ هر دو مقدار SHA-1 و نام، تنها نام را چاپ می‌کند. اگر همراه با --tags مشخص شود، پیشوند معمول تگ یعنی "tags/" نیز از نام حذف می‌شود، که خروجی را بیشتر به خروجی git-describe نزدیک می‌کند.

--no-undefined

هنگامی که یک ارجاع تعریف‌نشده باشد، به جای چاپ کردن undefined، با کد خطای غیرصفر (!= 0) خاتمه می‌یابد.

--always

شیء کامیت را با اختصار یکتا به عنوان راه‌حل جایگزین (fallback) نمایش می‌دهد.

با داشتن یک کامیت، موقعیت آن را نسبت به ارجاعات محلی پیدا کنید. فرض کنید فردی درباره کامیت فوق‌العاده 33db5f4d9027a10e477ccf054b2c1ab94f74c85a به شما پیام داده است. البته شما کامیت را بررسی می‌کنید، اما این کار فقط به شما می‌گوید چه چیزی رخ داده، نه زمینه و بستر آن (context).

دستور git name-rev را وارد کنید:

% git name-rev 33db5f4d9027a10e477ccf054b2c1ab94f74c85a
33db5f4d9027a10e477ccf054b2c1ab94f74c85a tags/v0.99~940

اکنون آگاه‌تر شده‌اید، زیرا می‌دانید که این رخداد ۹۴۰ بازنگری پیش از v0.99 روی داده است.

کار جالب دیگری که می‌توانید انجام دهید:

% git log | git name-rev --annotate-stdin

git(1), git-describe(1), git-rev-parse(1)

بخشی از مجموعه git(1)

2026-06-29 Git 2.55.0