GIT-FOR-EACH-REF(1) Git Manual GIT-FOR-EACH-REF(1)

git-for-each-ref - چاپ اطلاعات برای هر یک از مراجع

git for-each-ref [--count=<count>] [--shell|--perl|--python|--tcl]
                   [(--sort=<key>)...] [--format=<format>]
                   [--include-root-refs] [--points-at=<object>]
                   [--merged[=<object>]] [--no-merged[=<object>]]
                   [--contains[=<object>]] [--no-contains[=<object>]]
                   [(--exclude=<pattern>)...] [--start-after=<marker>]
                   [ --stdin | (<pattern>...)]

پیمایش روی تمامی مراجعی که با <pattern> مطابقت دارند و نمایش آن‌ها بر اساس <format> داده‌شده، پس از مرتب‌سازی آن‌ها بر اساس مجموعه <key> ارائه‌شده. اگر <count> داده شود، پس از نمایش آن تعداد مرجع متوقف می‌شود. مقادیر جای‌گذاری‌شده در <format> را می‌توان به‌صورت اختیاری به شکل رشته‌های متنی در زبان میزبان مشخص‌شده نقل‌قول (quote) کرد تا امکان ارزیابی مستقیم آن‌ها در آن زبان فراهم شود.

<pattern>...

اگر یک یا چند پارامتر <pattern> داده شود، تنها مراجعی نشان داده می‌شوند که حداقل با یکی از الگوها مطابقت داشته باشند؛ چه با استفاده از fnmatch(3) یا به‌صورت تحت‌اللفظی، که در حالت دوم تطبیق یا به‌طور کامل یا از ابتدا تا یک علامت اسلش انجام می‌شود.

--stdin

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

--count=<count>

توقف پس از نمایش <count> مرجع.

--sort=<key>

مرتب‌سازی بر اساس نام فیلد <key>. برای مرتب‌سازی نزولی بر اساس مقدار، پیشوند - را اضافه کنید. در صورت عدم تعیین، از refname استفاده می‌شود. می‌توانید از گزینه --sort=<key> چندین بار استفاده کنید که در این صورت آخرین کلید به عنوان کلید اصلی در نظر گرفته می‌شود.

--format[=<format>]

رشته‌ای که متغیرهای %(fieldname) را از مرجع در حال نمایش و شیئی که به آن اشاره می‌کند جای‌گذاری می‌کند. علاوه بر این، عبارت متنی %% به صورت % و %xx - که در آن xx ارقام هگزادسیمال هستند - به صورت نویسه‌ای با کد هگز xx رندر می‌شود. برای نمونه، %00 به \0 (NUL)، %09 به \t (TAB)، و %0a به \n (LF) تبدیل می‌شود.

در صورت عدم تعیین، <format> به‌طور پیش‌فرض به %(objectname) SPC %(objecttype) TAB %(refname) تنظیم می‌شود.

--color[=<when>]

رعایت رنگ‌های مشخص‌شده در گزینه --format. فیلد <when> باید یکی از مقادیر always، never، یا auto باشد (اگر <when> ذکر نشود، مانند این است که always داده شده باشد).

--shell, --perl, --python, --tcl

در صورت تعیین، رشته‌هایی که جایگزین متغیرهای نگه‌دارنده %(fieldname) می‌شوند، به صورت رشته‌های متنی مناسب برای زبان میزبان مشخص‌شده نقل‌قول (quote) می‌شوند. هدف از این کار تولید تکه‌کدی است که بتوان آن را مستقیماً با "eval" ارزیابی و اجرا کرد.

--points-at=<object>

تنها مراجعی را فهرست می‌کند که به شیء داده‌شده اشاره دارند.

--merged[=<object>]

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

--no-merged[=<object>]

تنها مراجعی را فهرست می‌کند که نوک آن‌ها از <object> (در صورت عدم تعیین، HEAD) قابل دسترسی نیست.

--contains[=<object>]

تنها مراجعی را فهرست می‌کند که حاوی <object> (در صورت عدم تعیین، HEAD) هستند.

--no-contains[=<object>]

تنها مراجعی را فهرست می‌کند که حاوی <object> (در صورت عدم تعیین، HEAD) نیستند.

--ignore-case

مرتب‌سازی و پالایش مراجع بدون در نظر گرفتن بزرگی و کوچکی حروف انجام می‌شود.

--omit-empty

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

--exclude=<excluded-pattern>

اگر یک یا چند گزینه --exclude داده شود، تنها مراجعی نمایش داده می‌شوند که با هیچ یک از پارامترهای <excluded-pattern> مطابقت نداشته باشند. تطبیق با استفاده از همان قواعد مربوط به <pattern> در بالا انجام می‌شود.

--include-root-refs

فهرست کردن مراجع ریشه ( HEAD و شبه‌مراجع) جدا از مراجع معمولی.

--start-after=<marker>

امکان صفحه‌بندی خروجی را با پرش از مراجع تا نشانگر مشخص‌شده (و شامل خود آن) فراهم می‌کند. هنگام صفحه‌بندی باید توجه داشت که مراجع ممکن است میان فراخوانی‌ها حذف، تغییر یا اضافه شوند. خروجی تنها مراجعی را ارائه می‌دهد که از نظر لغوی پس از نشانگر قرار می‌گیرند. خروجی از نخستین مرجعی آغاز می‌شود که از نظر الفبایی پس از نشانگر می‌آید. نمی‌توان آن را همراه با گزینه‌های --sort=<key> یا --stdin، یا آرگومان(های) <pattern> برای محدود کردن مراجع استفاده کرد.

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

برای تمامی اشیاء، نام‌های زیر قابل استفاده هستند:

refname

نام مرجع (بخشی که پس از $GIT_DIR/) می‌آید. برای نام کوتاه و بدون ابهام مرجع، پسوند :short را اضافه کنید. گزینه core.warnAmbiguousRefs برای انتخاب حالت اختصار سخت‌گیرانه استفاده می‌شود. اگر lstrip=<n> (rstrip=<n>) اضافه شود، تعداد <n> مؤلفه مسیر جداشده با اسلش را از ابتدا (انتهای) نام مرجع حذف می‌کند (برای نمونه %(refname:lstrip=2) مقدار refs/tags/foo را به foo و %(refname:rstrip=2) مقدار refs/tags/foo را به refs تبدیل می‌کند). اگر <n> یک عدد منفی باشد، به تعداد لازم مؤلفه مسیر از انتهای مشخص‌شده حذف می‌شود تا -<n> مؤلفه مسیر باقی بماند (برای نمونه %(refname:lstrip=-2) مقدار refs/tags/foo را به tags/foo و %(refname:rstrip=-1) مقدار refs/tags/foo را به refs تبدیل می‌کند). هنگامی که مرجع مؤلفه‌های کافی نداشته باشد، در صورت حذف با <n> مثبت نتیجه یک رشته خالی می‌شود، یا اگر با <N> منفی حذف شود نام کامل مرجع بازگردانده می‌شود. هیچ‌کدام خطا به شمار نمی‌روند.

strip می‌تواند به عنوان مترادفی برای lstrip استفاده شود.

objecttype

نوع شیء ( blob، tree، commit، tag).

objectsize

اندازه شیء (همان مقداری که git cat-file -s گزارش می‌دهد). برای دریافت اندازه اشغال‌شده توسط شیء روی دیسک (به بایت)، پسوند :disk را اضافه کنید. یادداشت مربوط به اندازه‌ها روی دیسک را در بخش CAVEATS در زیر ببینید.

objectname

نام شیء (معروف به SHA-1). برای مخفف بدون ابهام نام شیء، پسوند :short را اضافه کنید. برای اختصار نام شیء با طول دلخواه، پسوند :short=<length> را اضافه کنید که حداقل طول آن MINIMUM_ABBREV است. این طول ممکن است برای اطمینان از یکتا بودن نام شیء افزایش یابد.

deltabase

اگر شیء به عنوان دلتا ذخیره شده باشد، این مقدار به نام شیء پایه دلتا (delta base) برای آن شیء گسترش می‌یابد؛ در غیر این صورت به نام شیء پوچ (همه صفرها) تبدیل می‌شود.

upstream

نام یک مرجع محلی که می‌توان آن را «بالادست» (upstream) مرجع نمایش داده‌شده دانست. گزینه‌های :short، :lstrip و :rstrip را به همان شیوه refname در بالا پشتیبانی می‌کند. علاوه بر این از :track برای نمایش "[ahead N, behind M]" و از :trackshort برای نمایش نسخه خلاصه: ">" (جلوتر)، "<" (عقب‌تر)، "<>" (هم جلوتر و هم عقب‌تر) یا "=" (همگام) پشتیبانی می‌کند. همچنین :track هر زمان که با مرجع بالادست نامعلومی روبرو شود عبارت "[gone]" را چاپ می‌کند. برای نمایش اطلاعات ردیابی بدون کروشه (یعنی "ahead N, behind M") پسوند :track,nobracket را اضافه کنید.

برای هر شاخه ردیابی دوردست %(upstream)، عبارات %(upstream:remotename) و %(upstream:remoteref) به ترتیب به نام مخزن دوردست و نام مرجع دوردست ردیابی‌شده اشاره دارند. به عبارت دیگر، شاخه ردیابی دوردست را می‌توان به‌طور صریح و مجزا با استفاده از مشخصه مرجع %(upstream:remoteref):%(upstream) جهت واکشی از %(upstream:remotename) به‌روزرسانی کرد.

اگر مرجع فاقد اطلاعات ردیابی مربوطه باشد، هیچ اثری ندارد. تمامی گزینه‌ها به جز nobracket مانعة‌الجمع هستند، اما اگر با هم استفاده شوند آخرین گزینه انتخاب می‌شود.

push

نام یک مرجع محلی که نشان‌دهنده مکان @{push} برای مرجع نمایش داده‌شده است. همانند upstream از گزینه‌های :short، :lstrip، :rstrip، :track، :trackshort، :remotename و :remoteref پشتیبانی می‌کند. اگر هیچ مرجع @{push} پیکربندی نشده باشد، رشته‌ای خالی تولید می‌کند.

HEAD

اگر HEAD با مرجع جاری (شاخه استخراج‌شده) مطابقت داشته باشد علامت *، و در غیر این صورت ' ' (یک فاصله).

color

تغییر رنگ خروجی. پس از آن :<colorname> می‌آید، که نام‌های رنگ در بخش Values در قسمت "CONFIGURATION FILE" از git-config(1) شرح داده شده‌اند؛ برای نمونه، %(color:bold red).

align

تراز کردن چپ، وسط یا راست محتوای بین %(align:...) و %(end). پس از "align:"، مقادیر width=<width> و position=<position> به هر ترتیبی و با جداکننده کاما می‌آیند، که در آن <position> یکی از مقادیر left، right یا middle است (مقدار پیش‌فرض left است) و <width> طول کل محتوا با در نظر گرفتن تراز است. برای اختصار، پیشوندهای "width=" و/یا "position=" را می‌توان حذف کرد و به جای آن تنها از <width> و <position> استفاده نمود؛ برای مثال، %(align:<width>,<position>). اگر طول محتوا بیشتر از عرض باشد، هیچ ترازی انجام نمی‌شود. در صورت استفاده با --quote، تمام موارد میان %(align:...) و %(end) نقل‌قول می‌شوند، اما در صورت تودرتو بودن، تنها بالاترین سطح نقل‌قول خواهد شد.

if

به صورت %(if)...%(then)...%(end) یا %(if)...%(then)...%(else)...%(end) استفاده می‌شود. اگر پس از %(if) اتمی دارای مقدار یا یک عبارت رشته‌ای وجود داشته باشد، هر آنچه پس از %(then) باشد چاپ می‌شود؛ در غیر این صورت اگر از اتم %(else) استفاده شده باشد، تمام موارد پس از %(else) چاپ خواهد شد. هنگام ارزیابی رشته پیش از %(then)، فاصله‌های خالی نادیده گرفته می‌شوند؛ این امر زمانی مفید است که از اتم %(HEAD) استفاده می‌کنیم که یا "*" یا " " را چاپ می‌کند و می‌خواهیم شرط if را تنها روی مرجع HEAD اعمال کنیم. برای مقایسه مقدار میان اتم‌های %(if:...) و %(then) با رشته داده‌شده، ":equals=<string>" یا ":notequals=<string>" را اضافه کنید.

symref

مرجعی که مرجع نمادین مشخص‌شده به آن ارجاع دارد. اگر مرجع نمادین نباشد، چیزی چاپ نمی‌شود. همانند refname در بالا از گزینه‌های :short، :lstrip و :rstrip پشتیبانی می‌کند.

signature

امضای GPG یک کامیت.

signature:grade

نمایش

G

برای یک امضای خوب (معتبر)

B

برای یک امضای نامعتبر (بد)

U

برای یک امضای خوب با اعتبار نامشخص

X

برای یک امضای خوب که منقضی شده است

Y

برای یک امضای خوب ایجادشده با کلیدی که منقضی شده است

R

برای یک امضای خوب ایجادشده با کلیدی که لغو (revoked) شده است

E

اگر امضا قابل بررسی نباشد (برای نمونه مفقود بودن کلید)

N

برای حالت بدون امضا.

signature:signer

امضاکننده امضای GPG یک کامیت.

signature:key

کلید امضای GPG یک کامیت.

signature:fingerprint

اثر انگشت (fingerprint) امضای GPG یک کامیت.

signature:primarykeyfingerprint

اثر انگشت کلید اصلی امضای GPG یک کامیت.

signature:trustlevel

سطح اعتماد امضای GPG یک کامیت. خروجی‌های ممکن عبارتند از: ultimate، fully، marginal، never و undefined.

worktreepath

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

ahead-behind:<commit-ish>

دو عدد صحیح جداشده با یک فاصله، که به ترتیب تعداد کامیت‌های جلوتر و عقب‌تر را هنگام مقایسه مرجع خروجی با <committish> مشخص‌شده در قالب نشان می‌دهند.

is-base:<commit-ish>

حداکثر در یک ردیف، (<commit-ish>) ظاهر می‌شود تا مرجعی را نشان دهد که به احتمال زیاد مرجع استفاده‌شده به عنوان نقطه شروع شاخه‌ای است که <commit-ish> را تولید کرده است. این انتخاب با استفاده از یک روش ابتکاری (heuristic) انجام می‌شود: انتخاب مرجعی که تعداد کامیت‌ها را در تاریخچه والد اول <commit-ish> و نه در تاریخچه والد اول مرجع، به حداقل می‌رساند.

برای نمونه، نمودار زیر را از تاریخچه‌های والد اول چندین مرجع در نظر بگیرید:

*--*--*--*--*--* refs/heads/A
\
 \
  *--*--*--* refs/heads/B
   \     \
    \     \
     *     * refs/heads/C
      \
       \
        *--* refs/heads/D

در اینجا، اگر A، B و C مراجع فیلترشده باشند و رشته قالب %(refname):%(is-base:D) باشد، خروجی به این صورت خواهد بود:

refs/heads/A:
refs/heads/B:(D)
refs/heads/C:

زیرا تاریخچه والد اول D نخستین تقاطع خود را با تاریخچه‌های والد اول مراجع فیلترشده در یک نیای مشترک والد اول از B و C دارد و در صورت تساوی، نخستین مرجع در ترتیب مرتب‌شده انتخاب می‌شود.

توجه داشته باشید که اگر تاریخچه والد اول <commit-ish> با تاریخچه‌های والد اول مراجع فیلترشده تقاطعی نداشته باشد، این توکن ظاهر نخواهد شد.

describe[:<option>,...]

یک نام خوانا برای انسان، مانند git-describe(1)؛ رشته‌ای خالی برای کامیت‌های غیرقابل توصیف. پس از رشته describe ممکن است دو نقطه و یک یا چند گزینه جداشده با کاما بیاید.

tags=<bool-value>

به جای در نظر گرفتن تنها تگ‌های حاشیه‌نویسی‌شده، تگ‌های سبک (lightweight) را نیز لحاظ کن؛ برای جزئیات به گزینه مربوطه در git-describe(1) مراجعه کنید.

abbrev=<number>

استفاده از حداقل <number> رقم هگزادسیمال؛ برای جزئیات به گزینه مربوطه در git-describe(1) مراجعه کنید.

match=<pattern>

تنها تگ‌های منطبق بر الگوی glob(7) با نام <pattern>، بدون در نظر گرفتن پیشوند refs/tags/ را در نظر بگیر؛ برای جزئیات به گزینه مربوطه در git-describe(1) مراجعه کنید.

exclude=<pattern>

تگ‌های منطبق بر الگوی glob(7) با نام <pattern>، بدون در نظر گرفتن پیشوند refs/tags/ را در نظر نگیر؛ برای جزئیات به گزینه مربوطه در git-describe(1) مراجعه کنید.

علاوه بر موارد بالا، برای اشیاء کامیت و تگ، نام فیلدهای سربرگ (tree، parent، object، type و tag) را می‌توان برای تعیین مقدار موجود در فیلد سربرگ استفاده کرد. فیلدهای tree و parent را نیز می‌توان درست مانند objectname با اصلاح‌کننده‌های :short و :short=<length> استفاده کرد.

برای اشیاء کامیت و تگ، فیلدهای ویژه creatordate و creator بسته به نوع شیء، متناظر با تاریخ مناسب یا چندتایی نام-ایمیل-تاریخ برگرفته از فیلدهای committer یا tagger خواهند بود. این فیلدها برای کار با ترکیبی از تگ‌های حاشیه‌نویسی‌شده و سبک در نظر گرفته شده‌اند.

برای اشیاء تگ، اگر پیشوند ستاره (*) قبل از fieldname بیاید، به مقدار fieldname شیء پوسته‌گیری‌شده (peeled) گسترش می‌یابد، نه خود شیء تگ.

فیلدهایی که چندتایی نام-ایمیل-تاریخ را به عنوان مقدار خود دارند (author، committer و tagger) می‌توانند با پسوندهای name، email و date همراه شوند تا مؤلفه نام‌برده را استخراج کنند. برای فیلدهای ایمیل (authoremail، committeremail و taggeremail)، می‌توان :trim را اضافه کرد تا ایمیل بدون علامت‌های قلاب‌مانند (<>) به دست آید، و :localpart را برای دریافت بخش پیش از نماد @ از ایمیل پیراسته به کار برد. علاوه بر این‌ها، گزینه :mailmap و گزینه‌های متناظر :mailmap,trim و :mailmap,localpart را می‌توان (ترتیب اهمیتی ندارد) برای دریافت مقادیر نام و ایمیل مطابق با فایل .mailmap یا مطابق با فایل تعیین‌شده در متغیر پیکربندی mailmap.file یا mailmap.blob استفاده کرد (به gitmailmap(5) مراجعه کنید).

داده خام در یک شیء، raw است.

raw:size

اندازه داده خام شیء.

توجه داشته باشید که --format=%(raw) را نمی‌توان همراه با گزینه‌های --python، --shell، --tcl استفاده کرد، زیرا چنین زبان‌هایی ممکن است داده‌های باینری دلخواه را در نوع متغیر رشته‌ای خود پشتیبانی نکنند.

پیام موجود در یک شیء کامیت یا تگ، contents است که از آن می‌توان contents:<part> را برای استخراج بخش‌های مختلف به کار برد:

contents:size

اندازه پیام کامیت یا تگ به بایت.

contents:subject

نخستین پاراگراف پیام، که معمولاً یک خط واحد است، به عنوان «موضوع» (subject) پیام کامیت یا تگ در نظر گرفته می‌شود. به جای contents:subject، می‌توان از فیلد subject نیز برای دستیابی به نتایج یکسان استفاده کرد. برای به دست آوردن خط موضوع مناسب نام فایل، می‌توان :sanitize را به subject الحاق نمود.

contents:body

بخش باقی‌مانده از پیام کامیت یا تگ که پس از «موضوع» قرار می‌گیرد.

contents:signature

امضای GPG اختیاری تگ.

contents:lines=<n>

تعداد <n> خط نخست پیام.

علاوه بر این، تریلرها آن‌گونه که توسط git-interpret-trailers(1) تفسیر می‌شوند، به صورت trailers[:<option>,...] (یا با استفاده از نام مستعار قدیمی contents:trailers[:<option>,...]) به دست می‌آیند. برای مقادیر معتبر <option>، بخش trailers در git-log(1) را ببینید.

برای اهداف مرتب‌سازی، فیلدهای دارای مقادیر عددی بر اساس ترتیب عددی مرتب می‌شوند (objectsize، authordate، committerdate، creatordate، taggerdate). تمام فیلدهای دیگر بر اساس ترتیب مقدار بایتی خود مرتب می‌شوند.

همچنین گزینه‌ای برای مرتب‌سازی بر اساس نسخه‌ها وجود دارد که این کار را می‌توان با استفاده از نام فیلد version:refname یا نام مستعار آن v:refname انجام داد.

در هر صورت، نام فیلدی که به فیلدی غیرقابل اعمال بر شیء ارجاع‌شده توسط مرجع اشاره دارد، باعث بروز خطا نمی‌شود؛ بلکه به جای آن یک رشته خالی برمی‌گرداند.

به عنوان یک حالت خاص برای فیلدهای از نوع تاریخ، می‌توانید با افزودن : و به دنبال آن نام قالب تاریخ، قالبی را برای تاریخ مشخص کنید (مقدارهایی را که گزینه --date در git-rev-list(1) می‌پذیرد ببینید). اگر این قالب‌بندی در یک کلید --sort ارائه شود، مراجع به جای مقدار عددی برچسب زمانی زیربنایی، بر اساس مقدار بایتی رشته قالب‌بندی‌شده مرتب خواهند شد.

برخی اتم‌ها مانند %(align) و %(if) همیشه نیازمند یک %(end) منطبق هستند. ما به آن‌ها «اتم‌های آغازین» می‌گوییم و گاهی آن‌ها را با %($open) نشان می‌دهیم.

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

نمونه‌ای که مستقیماً متنی قالب‌بندی‌شده تولید می‌کند. نمایش ۳ کامیت تگ‌شده اخیر:

#!/bin/sh
git for-each-ref --count=3 --sort='-*authordate' \
`--format='From: %(*authorname) %(*authoremail)
Subject: %(*subject)
Date: %(*authordate)
Ref: %(*refname)
%(*body)
' 'refs/tags'

یک مثال ساده که استفاده از eval در پوسته را روی خروجی نشان می‌دهد و کاربرد --shell را به نمایش می‌گذارد. فهرست کردن پیشوندهای تمامی headها:

#!/bin/sh
git for-each-ref --shell --format="ref=%(refname)" refs/heads | \
while read entry
do
        eval "$entry"
        echo `dirname $ref`
done

گزارشی جامع‌تر درباره تگ‌ها، که نشان می‌دهد قالب می‌تواند یک اسکریپت کامل باشد:

#!/bin/sh
fmt='
        r=%(refname)
        t=%(*objecttype)
        T=${r#refs/tags/}
        o=%(*objectname)
        n=%(*authorname)
        e=%(*authoremail)
        s=%(*subject)
        d=%(*authordate)
        b=%(*body)
        kind=Tag
        if test "z$t" = z
        then
                # could be a lightweight tag
                t=%(objecttype)
                kind="Lightweight tag"
                o=%(objectname)
                n=%(authorname)
                e=%(authoremail)
                s=%(subject)
                d=%(authordate)
                b=%(body)
        fi
        echo "$kind $T points at a $t object $o"
        if test "z$t" = zcommit
        then
                echo "The commit was authored by $n $e
at $d, and titled
    $s
Its message reads as:
"
                echo "$b" | sed -e "s/^/    /"
                echo
        fi
'
eval=`git for-each-ref --shell --format="$fmt" \
        --sort='*objecttype' \
        --sort=-taggerdate \
        refs/tags`
eval "$eval"

نمونه‌ای برای نمایش کاربرد %(if)...%(then)...%(else)...%(end). این الگو پیش از نام شاخه جاری یک ستاره قرار می‌دهد.

git for-each-ref --format="%(if)%(HEAD)%(then)* %(else)  %(end)%(refname:short)" refs/heads/

نمونه‌ای برای نمایش کاربرد %(if)...%(then)...%(end). در صورت وجود، نام نویسنده را چاپ می‌کند.

git for-each-ref --format="%(refname)%(if)%(authorname)%(then) Authored by: %(authorname)%(end)"

توجه داشته باشید که اندازه‌های اشیاء روی دیسک به طور دقیق گزارش می‌شوند، اما باید در نتیجه‌گیری درباره اینکه کدام مراجع یا اشیاء مسئول مصرف فضای دیسک هستند احتیاط کرد. اندازه یک شیء بسته‌بندی‌شده غیردلتا ممکن است بسیار بزرگتر از اندازه اشیایی باشد که با آن تفاضل دلتا دارند، اما اینکه کدام شیء به عنوان پایه و کدام یک به عنوان دلتا تعیین شود اختیاری بوده و در طول یک repack دستخوش تغییر می‌شود.

همچنین توجه داشته باشید که ممکن است چندین نسخه از یک شیء در پایگاه داده اشیاء وجود داشته باشد؛ در این حالت، مشخص نیست که اندازه یا پایه دلتای کدام نسخه گزارش خواهد شد.

هنگام ترکیب چندین فیلتر --contains و --no-contains، تنها مراجعی نمایش داده می‌شوند که حداقل شامل یکی از کامیت‌های --contains بوده و هیچ‌یک از کامیت‌های --no-contains را در بر نداشته باشند.

هنگام ترکیب چندین فیلتر --merged و --no-merged، تنها مراجعی نمایش داده می‌شوند که حداقل از یکی از کامیت‌های --merged قابل دسترسی بوده و از هیچ‌یک از کامیت‌های --no-merged قابل دسترسی نباشند.

git-show-ref(1)

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

2026-06-29 Git 2.55.0