GIT-SHOW-REF(1) Git Manual GIT-SHOW-REF(1)

git-show-ref - فهرست کردن ارجاع‌ها در یک مخزن محلی

git show-ref [--head] [-d | --dereference]
             [-s | --hash[=<n>]] [--abbrev[=<n>]] [--branches] [--tags]
             [--] [<pattern>...]
git show-ref --verify [-q | --quiet] [-d | --dereference]
             [-s | --hash[=<n>]] [--abbrev[=<n>]]
             [--] [<ref>...]
git show-ref --exclude-existing[=<pattern>]
git show-ref --exists <ref>

ارجاع‌های موجود در یک مخزن محلی را همراه با شناسه‌های کامیت (commit ID) مربوط به آن‌ها نمایش می‌دهد. نتایج را می‌توان با استفاده از یک الگو فیلتر کرد و تگ‌ها را می‌توان برای دستیابی به شناسه‌های شیء (object ID) ارجاع‌زدایی (dereference) کرد. علاوه بر این، می‌توان از آن برای بررسی وجود یک ارجاع خاص استفاده نمود.

به‌طور پیش‌فرض، تگ‌ها، سرشاخه‌ها (heads) و ارجاع‌های دوردست (remote refs) را نمایش می‌دهد.

شکل --exclude-existing یک فیلتر است که عمل عکس را انجام می‌دهد. این گزینه ارجاع‌ها را خط به خط از ورودی استاندارد (stdin) می‌خواند و مواردی را که در مخزن محلی وجود ندارند نمایش می‌دهد.

از شکل --exists می‌توان برای بررسی وجود یک ارجاع منفرد استفاده کرد. این حالت بررسی نمی‌کند که آیا ارجاع به یک شیء واقعی منتهی می‌شود یا خیر.

استفاده از این ابزار به جای دسترسی مستقیم به فایل‌های درون دایرکتوری .git توصیه می‌شود.

--head

نمایش ارجاع HEAD، حتی اگر در حالت عادی فیلتر شده و نمایش داده نشود.

--branches, --tags

محدود کردن خروجی به ترتیب به شاخه‌های محلی و تگ‌های محلی. این گزینه‌ها مانعة‌الجمع نیستند؛ در صورت ارائه هر دو، ارجاع‌های ذخیره‌شده در "refs/heads" و "refs/tags" نمایش داده می‌شوند. توجه داشته باشید که --heads یک نام مترادف منسوخ‌شده برای --branches است و ممکن است در آینده حذف شود.

-d, --dereference

تگ‌ها را نیز برای رسیدن به شناسه شیء (object ID) ارجاع‌زدایی می‌کند. این موارد همراه با عبارت الحاقی ^{} نمایش داده خواهند شد.

-s, --hash[=<n>]

تنها شناسه شیء (OID) را نمایش می‌دهد، نه نام ارجاع را. در صورت ترکیب با --dereference، تگ ارجاع‌زدایی‌شده همچنان پس از OID نمایش داده خواهد شد.

--verify

فعال‌سازی بررسی دقیق‌تر ارجاع با الزام به ارائه مسیر دقیق ref. علاوه بر برگرداندن کد خطای 1، در صورتی که گزینه --quiet مشخص نشده باشد، یک پیام خطا نیز چاپ خواهد کرد.

--exists

بررسی می‌کند که آیا ارجاع داده‌شده وجود دارد یا خیر. در صورت وجود کد خروج 0، در صورت عدم وجود کد 2، و در صورتی که جستجوی ارجاع با خطایی غیر از مفقود بودن آن مواجه شود کد خروج 1 را برمی‌گرداند.

--abbrev[=<n>]

خلاصه‌سازی نام شیء (object name). هنگام استفاده از --hash، نیازی به ذکر --hash --abbrev نیست؛ استفاده از --hash=n کافی خواهد بود.

-q, --quiet

هیچ نتیجه‌ای را در stdout چاپ نمی‌کند. می‌تواند همراه با --verify برای بررسی بی‌سروصدای وجود یک ارجاع به کار رود.

--exclude-existing[=<pattern>]

باعث می‌شود دستور git show-ref به عنوان فیلتری عمل کند که ارجاع‌ها را از stdin به فرمت ^(?:<anything>\s)?<refname>(?:\^{})?$ می‌خواند و اقدامات زیر را روی هر یک انجام می‌دهد: (۱) حذف ^{} از انتهای خط در صورت وجود؛ (۲) نادیده گرفتن در صورتی که الگو مشخص شده باشد و با ابتدای refname مطابقت نداشته باشد؛ (۳) هشدار در صورتی که refname ساختار درستی نداشته باشد و عبور از آن؛ (۴) نادیده گرفتن در صورتی که refname ارجاعی باشد که در مخزن محلی وجود دارد؛ (۵) در غیر این صورت، چاپ خط در خروجی.

<pattern>...

نمایش ارجاع‌های منطبق با یک یا چند الگو. الگوها از انتهای نام کامل مطابقت داده می‌شوند و تنها بخش‌های کامل تطبیق داده می‌شوند؛ برای نمونه master با refs/heads/master، refs/remotes/origin/master، refs/tags/jedi/master مطابقت دارد، اما با refs/heads/mymaster یا refs/remotes/master/jedi تطبیق ندارد.

فرمت خروجی به این صورت است:

<oid> SP <ref> LF

برای نمونه:

$ git show-ref --head --dereference
832e76a9899f560a90ffd62ae2ce83bbeff58f54 HEAD
832e76a9899f560a90ffd62ae2ce83bbeff58f54 refs/heads/master
832e76a9899f560a90ffd62ae2ce83bbeff58f54 refs/heads/origin
3521017556c5de4159da4615a39fa4d5d2c279b5 refs/tags/v0.99.9c
6ddc0964034342519a87fe013781abf31c6db6ad refs/tags/v0.99.9c^{}
055e4ae3ae6eb344cbabf2a5256a49ea66040131 refs/tags/v1.0rc4
423325a2d24638ddcc82ce47be5e40be550f4507 refs/tags/v1.0rc4^{}
...

هنگام استفاده از --hash (و نه --dereference)، خروجی به فرمت زیر است:

<oid> LF

برای نمونه:

$ git show-ref --branches --hash
2e3ba0114a1f52b47df29743d6915d056be13278
185008ae97960c8d551adcd9e23565194651b5d1
03adf42c988195b50e1a1935ba5fcbc39b2b029b
...

برای نمایش تمام ارجاع‌های موسوم به "master"، اعم از تگ‌ها، سرشاخه‌ها یا هر مورد دیگر، و صرف‌نظر از عمق آن‌ها در سلسسله‌مراتب نام‌گذاری ارجاع‌ها، از دستور زیر استفاده کنید:

git show-ref master

این دستور در صورت وجود، "refs/heads/master" و همچنین "refs/remote/other-repo/master" را نمایش می‌دهد.

هنگام استفاده از گزینه --verify، دستور نیازمند یک مسیر دقیق است:

git show-ref --verify refs/heads/master

تنها با شاخه دقیق به نام "master" مطابقت خواهد داشت.

اگر هیچ موردی منطبق نشود، دستور git show-ref کد خطای 1 را برمی‌گرداند، و در حالت تایید اعتبار (verification)، یک پیام خطا نیز نمایش می‌دهد.

برای اسکریپت‌نویسی، می‌توانید با گزینه --quiet خروجی را بی‌صدا کنید که به شما اجازه می‌دهد کارهایی مانند نمونه زیر را انجام دهید:

git show-ref --quiet --verify -- "refs/heads/$headname" ||
        echo "$headname is not a valid branch"

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

برای نمایش انحصاری تگ‌ها، یا تنها سرشاخه‌های اصلی، به ترتیب از --tags یا --branches استفاده کنید (استفاده از هر دو بدین معناست که تگ‌ها و شاخه‌ها نمایش داده شوند، اما سایر ارجاع‌های متفرقه زیر دایرکتوری refs/ نمایش داده نشوند).

برای ارجاع‌زدایی خودکار اشیای تگ، از گزینه -d یا --dereference استفاده کنید تا بتوانید دستوری مانند نمونه زیر را اجرا کنید:

git show-ref --tags --dereference

تا فهرستی از تمام تگ‌ها همراه با شیء مورد ارجاع آن‌ها به دست آورید.

.git/refs/*, .git/packed-refs

git-for-each-ref(1), git-ls-remote(1), git-update-ref(1), gitrepository-layout(5)

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

2026-06-29 Git 2.55.0