GIT-SH-SETUP(1) Git Manual GIT-SH-SETUP(1)

git-sh-setup - کدهای راه‌اندازی مشترک برای اسکریپت‌های شل گیت

. "$(git --exec-path)/git-sh-setup"

این دستوری نیست که کاربر نهایی بخواهد آن را اجرا کند؛ هرگز. این مستندات برای افرادی است که در حال بررسی اسکریپت‌های سطح کاربری (Porcelain) هستند یا اسکریپت‌های جدید می‌نویسند.

اسکریپت git sh-setup طوری طراحی شده است که توسط سایر اسکریپت‌های شل سورس (source با استفاده از .) شود تا متغیرهایی اشاره‌کننده به دایرکتوری‌های عادی گیت و چند تابع کمکی شل را تنظیم کند.

پیش از سورس کردن آن، اسکریپت شما باید چند متغیر را مقداردهی کند؛ متغیر USAGE (و در صورت وجود LONG_USAGE) برای تعریف پیامی که توسط تابع شل usage() ارائه می‌شود استفاده می‌شود. متغیر SUBDIRECTORY_OK در صورتی قابل تنظیم است که اسکریپت بتواند از یک زیرپوشه درون درخت کاری اجرا شود (برخی دستورات این امکان را ندارند).

این اسکریپت متغیرهای شل GIT_DIR و GIT_OBJECT_DIRECTORY را مقداردهی می‌کند، اما آن‌ها را در محیط صادر (export) نمی‌کند.

die

پس از ارسال پیام خطای مشخص‌شده به جریان خطای استاندارد، خارج می‌شود.

usage

با چاپ پیام راهنمای نحوه استفاده (usage) متوقف می‌شود.

set_reflog_action

متغیر محیطی GIT_REFLOG_ACTION را به رشته داده‌شده (معمولاً نام برنامه) تنظیم می‌کند، مگر اینکه قبلاً تنظیم شده باشد. هر زمان که اسکریپت دستوری از git را اجرا کند که ارجاع‌ها (refs) را به‌روزرسانی می‌کند، یک مدخل در reflog با استفاده از مقدار این رشته ایجاد می‌شود تا سابقه‌ای از اینکه چه دستوری ارجاع را به‌روزرسانی کرده باقی بماند.

git_editor

ویرایشگر انتخابی کاربر (GIT_EDITOR، core.editor، VISUAL یا EDITOR) را روی یک فایل مشخص اجرا می‌کند، اما در صورتی که هیچ ویرایشگری مشخص نشده باشد و ترمینال فاقد قابلیت‌های لازم (dumb) باشد، با خطا متوقف می‌شود.

is_bare_repository

مقدار true یا false را به جریان خروجی استاندارد ارسال می‌کند تا مشخص شود که آیا مخزن یک مخزن خام (bare repository، یعنی بدون درخت کاری مرتبط) است یا خیر.

cd_to_toplevel

دستور chdir را برای رفتن به بالاترین سطح درخت کاری اجرا می‌کند.

require_work_tree

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

require_work_tree_exists

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

require_clean_work_tree <action> [<hint>]

بررسی می‌کند که درخت کاری و نمایه (index) مرتبط با مخزن، تغییرات کامیت‌نشده در فایل‌های ردیابی‌شده نداشته باشند. در غیر این صورت یک پیام خطا به قالب Cannot <action>: <reason>. <hint>، صادر کرده و متوقف می‌شود. مثال:
require_clean_work_tree rebase "Please commit or stash them."

get_author_ident_from_commit

کدی را برای استفاده همراه با eval خروجی می‌دهد تا متغیرهای GIT_AUTHOR_NAME، GIT_AUTHOR_EMAIL و GIT_AUTHOR_DATE را برای یک کامیت مشخص مقداردهی کند.

create_virtual_base

فایل اول را طوری ویرایش می‌کند که تنها خطوط مشترک با فایل دوم باقی بمانند. اگر محتوای مشترک کافی نباشد، فایل اول خالی باقی می‌ماند. نتیجه به عنوان یک ورودی پایه مجازی مناسب برای ادغام سه‌طرفه (3-way merge) قابل استفاده است.

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

2026-06-29 Git 2.55.0