GIT-FOR-EACH-REF(1) Git Manual GIT-FOR-EACH-REF(1) نام (NAME) git-for-each-ref - چاپ اطلاعات برای هر یک از مراجع خلاصه دستور (SYNOPSIS) git for-each-ref [--count=] [--shell|--perl|--python|--tcl] [(--sort=)...] [--format=] [--include-root-refs] [--points-at=] [--merged[=]] [--no-merged[=]] [--contains[=]] [--no-contains[=]] [(--exclude=)...] [--start-after=] [ --stdin | (...)] توضیحات (DESCRIPTION) پیمایش روی تمامی مراجعی که با مطابقت دارند و نمایش آن‌ها بر اساس داده‌شده، پس از مرتب‌سازی آن‌ها بر اساس مجموعه ارائه‌شده. اگر داده شود، پس از نمایش آن تعداد مرجع متوقف می‌شود. مقادیر جای‌گذاری‌شده در را می‌توان به‌صورت اختیاری به شکل رشته‌های متنی در زبان میزبان مشخص‌شده نقل‌قول (quote) کرد تا امکان ارزیابی مستقیم آن‌ها در آن زبان فراهم شود. گزینه‌ها (OPTIONS) ... اگر یک یا چند پارامتر داده شود، تنها مراجعی نشان داده می‌شوند که حداقل با یکی از الگوها مطابقت داشته باشند؛ چه با استفاده از fnmatch(3) یا به‌صورت تحت‌اللفظی، که در حالت دوم تطبیق یا به‌طور کامل یا از ابتدا تا یک علامت اسلش انجام می‌شود. --stdin فهرست الگوها به جای فهرست آرگومان‌ها از ورودی استاندارد خوانده می‌شود. --count= توقف پس از نمایش مرجع. --sort= مرتب‌سازی بر اساس نام فیلد . برای مرتب‌سازی نزولی بر اساس مقدار، پیشوند - را اضافه کنید. در صورت عدم تعیین، از refname استفاده می‌شود. می‌توانید از گزینه --sort= چندین بار استفاده کنید که در این صورت آخرین کلید به عنوان کلید اصلی در نظر گرفته می‌شود. --format[=] رشته‌ای که متغیرهای %(fieldname) را از مرجع در حال نمایش و شیئی که به آن اشاره می‌کند جای‌گذاری می‌کند. علاوه بر این، عبارت متنی %% به صورت % و %xx - که در آن xx ارقام هگزادسیمال هستند - به صورت نویسه‌ای با کد هگز xx رندر می‌شود. برای نمونه، %00 به \0 (NUL)، %09 به \t (TAB)، و %0a به \n (LF) تبدیل می‌شود. در صورت عدم تعیین، به‌طور پیش‌فرض به %(objectname) SPC %(objecttype) TAB %(refname) تنظیم می‌شود. --color[=] رعایت رنگ‌های مشخص‌شده در گزینه --format. فیلد باید یکی از مقادیر always، never، یا auto باشد (اگر ذکر نشود، مانند این است که always داده شده باشد). --shell, --perl, --python, --tcl در صورت تعیین، رشته‌هایی که جایگزین متغیرهای نگه‌دارنده %(fieldname) می‌شوند، به صورت رشته‌های متنی مناسب برای زبان میزبان مشخص‌شده نقل‌قول (quote) می‌شوند. هدف از این کار تولید تکه‌کدی است که بتوان آن را مستقیماً با "eval" ارزیابی و اجرا کرد. --points-at= تنها مراجعی را فهرست می‌کند که به شیء داده‌شده اشاره دارند. --merged[=] تنها مراجعی را فهرست می‌کند که نوک آن‌ها از کامیت مشخص‌شده (در صورت عدم تعیین، HEAD) قابل دسترسی است. --no-merged[=] تنها مراجعی را فهرست می‌کند که نوک آن‌ها از (در صورت عدم تعیین، HEAD) قابل دسترسی نیست. --contains[=] تنها مراجعی را فهرست می‌کند که حاوی (در صورت عدم تعیین، HEAD) هستند. --no-contains[=] تنها مراجعی را فهرست می‌کند که حاوی (در صورت عدم تعیین، HEAD) نیستند. --ignore-case مرتب‌سازی و پالایش مراجع بدون در نظر گرفتن بزرگی و کوچکی حروف انجام می‌شود. --omit-empty پس از مراجع قالب‌بندی‌شده‌ای که فرمت آن‌ها به یک رشته خالی گسترش می‌یابد، خط جدیدی چاپ نکن. --exclude= اگر یک یا چند گزینه --exclude داده شود، تنها مراجعی نمایش داده می‌شوند که با هیچ یک از پارامترهای مطابقت نداشته باشند. تطبیق با استفاده از همان قواعد مربوط به در بالا انجام می‌شود. --include-root-refs فهرست کردن مراجع ریشه ( HEAD و شبه‌مراجع) جدا از مراجع معمولی. --start-after= امکان صفحه‌بندی خروجی را با پرش از مراجع تا نشانگر مشخص‌شده (و شامل خود آن) فراهم می‌کند. هنگام صفحه‌بندی باید توجه داشت که مراجع ممکن است میان فراخوانی‌ها حذف، تغییر یا اضافه شوند. خروجی تنها مراجعی را ارائه می‌دهد که از نظر لغوی پس از نشانگر قرار می‌گیرند. خروجی از نخستین مرجعی آغاز می‌شود که از نظر الفبایی پس از نشانگر می‌آید. نمی‌توان آن را همراه با گزینه‌های --sort= یا --stdin، یا آرگومان(های) برای محدود کردن مراجع استفاده کرد. نام‌های فیلد (FIELD NAMES) مقادیر گوناگون برگرفته از فیلدهای ساختاریافته در اشیاء ارجاع‌شده می‌توانند برای جای‌گذاری در خروجی حاصل یا به عنوان کلیدهای مرتب‌سازی استفاده شوند. برای تمامی اشیاء، نام‌های زیر قابل استفاده هستند: refname نام مرجع (بخشی که پس از $GIT_DIR/) می‌آید. برای نام کوتاه و بدون ابهام مرجع، پسوند :short را اضافه کنید. گزینه core.warnAmbiguousRefs برای انتخاب حالت اختصار سخت‌گیرانه استفاده می‌شود. اگر lstrip= (rstrip=) اضافه شود، تعداد مؤلفه مسیر جداشده با اسلش را از ابتدا (انتهای) نام مرجع حذف می‌کند (برای نمونه %(refname:lstrip=2) مقدار refs/tags/foo را به foo و %(refname:rstrip=2) مقدار refs/tags/foo را به refs تبدیل می‌کند). اگر یک عدد منفی باشد، به تعداد لازم مؤلفه مسیر از انتهای مشخص‌شده حذف می‌شود تا - مؤلفه مسیر باقی بماند (برای نمونه %(refname:lstrip=-2) مقدار refs/tags/foo را به tags/foo و %(refname:rstrip=-1) مقدار refs/tags/foo را به refs تبدیل می‌کند). هنگامی که مرجع مؤلفه‌های کافی نداشته باشد، در صورت حذف با مثبت نتیجه یک رشته خالی می‌شود، یا اگر با منفی حذف شود نام کامل مرجع بازگردانده می‌شود. هیچ‌کدام خطا به شمار نمی‌روند. strip می‌تواند به عنوان مترادفی برای lstrip استفاده شود. objecttype نوع شیء ( blob، tree، commit، tag). objectsize اندازه شیء (همان مقداری که git cat-file -s گزارش می‌دهد). برای دریافت اندازه اشغال‌شده توسط شیء روی دیسک (به بایت)، پسوند :disk را اضافه کنید. یادداشت مربوط به اندازه‌ها روی دیسک را در بخش CAVEATS در زیر ببینید. objectname نام شیء (معروف به SHA-1). برای مخفف بدون ابهام نام شیء، پسوند :short را اضافه کنید. برای اختصار نام شیء با طول دلخواه، پسوند :short= را اضافه کنید که حداقل طول آن 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 تغییر رنگ خروجی. پس از آن : می‌آید، که نام‌های رنگ در بخش Values در قسمت "CONFIGURATION FILE" از git-config(1) شرح داده شده‌اند؛ برای نمونه، %(color:bold red). align تراز کردن چپ، وسط یا راست محتوای بین %(align:...) و %(end). پس از "align:"، مقادیر width= و position= به هر ترتیبی و با جداکننده کاما می‌آیند، که در آن یکی از مقادیر left، right یا middle است (مقدار پیش‌فرض left است) و طول کل محتوا با در نظر گرفتن تراز است. برای اختصار، پیشوندهای "width=" و/یا "position=" را می‌توان حذف کرد و به جای آن تنها از و استفاده نمود؛ برای مثال، %(align:,). اگر طول محتوا بیشتر از عرض باشد، هیچ ترازی انجام نمی‌شود. در صورت استفاده با --quote، تمام موارد میان %(align:...) و %(end) نقل‌قول می‌شوند، اما در صورت تودرتو بودن، تنها بالاترین سطح نقل‌قول خواهد شد. if به صورت %(if)...%(then)...%(end) یا %(if)...%(then)...%(else)...%(end) استفاده می‌شود. اگر پس از %(if) اتمی دارای مقدار یا یک عبارت رشته‌ای وجود داشته باشد، هر آنچه پس از %(then) باشد چاپ می‌شود؛ در غیر این صورت اگر از اتم %(else) استفاده شده باشد، تمام موارد پس از %(else) چاپ خواهد شد. هنگام ارزیابی رشته پیش از %(then)، فاصله‌های خالی نادیده گرفته می‌شوند؛ این امر زمانی مفید است که از اتم %(HEAD) استفاده می‌کنیم که یا "*" یا " " را چاپ می‌کند و می‌خواهیم شرط if را تنها روی مرجع HEAD اعمال کنیم. برای مقایسه مقدار میان اتم‌های %(if:...) و %(then) با رشته داده‌شده، ":equals=" یا ":notequals=" را اضافه کنید. 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: دو عدد صحیح جداشده با یک فاصله، که به ترتیب تعداد کامیت‌های جلوتر و عقب‌تر را هنگام مقایسه مرجع خروجی با مشخص‌شده در قالب نشان می‌دهند. is-base: حداکثر در یک ردیف، () ظاهر می‌شود تا مرجعی را نشان دهد که به احتمال زیاد مرجع استفاده‌شده به عنوان نقطه شروع شاخه‌ای است که را تولید کرده است. این انتخاب با استفاده از یک روش ابتکاری (heuristic) انجام می‌شود: انتخاب مرجعی که تعداد کامیت‌ها را در تاریخچه والد اول و نه در تاریخچه والد اول مرجع، به حداقل می‌رساند. برای نمونه، نمودار زیر را از تاریخچه‌های والد اول چندین مرجع در نظر بگیرید: *--*--*--*--*--* 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 دارد و در صورت تساوی، نخستین مرجع در ترتیب مرتب‌شده انتخاب می‌شود. توجه داشته باشید که اگر تاریخچه والد اول با تاریخچه‌های والد اول مراجع فیلترشده تقاطعی نداشته باشد، این توکن ظاهر نخواهد شد. describe[: