GIT(1) دستورات عمومی کاربر GIT(1)

git - ردیاب محتوای ساده (سامانه کنترل نسخه توزیع‌شده)

git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>]
    [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
    [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--no-lazy-fetch]
    [--no-optional-locks] [--no-advice] [--bare] [--git-dir=<path>]
    [--work-tree=<path>] [--namespace=<name>] [--config-env=<name>=<envvar>]
    <command> [<args>]

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

برای شروع به gittutorial(7) مراجعه کنید، سپس برای آشنایی با حداقل مجموعه‌ای مفید از دستورات، giteveryday(7) را ببینید. مستند Git User’s Manual[1] شامل معرفی دقیق‌تر و عمیق‌تری است.

پس از تسلط بر مفاهیم پایه، می‌توانید به این صفحه بازگردید تا با دستوراتی که گیت ارائه می‌دهد آشنا شوید. با دستور "git help command" می‌توانید درباره تک‌تک دستورات گیت اطلاعات بیشتری کسب کنید. صفحه راهنمای gitcli(7) مروری کلی بر ساختار نحو دستورات خط فرمان به شما ارائه می‌دهد.

نسخه‌ای قالب‌بندی‌شده و پیونددار از آخرین مستندات گیت در https://git.github.io/htmldocs/git.html یا https://git-scm.com/docs قابل مشاهده است.

-v, --version

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

این گزینه در داخل به git version ... تبدیل می‌شود و همان گزینه‌های دستور git-version(1) را می‌پذیرد. اگر --help نیز داده شود، بر --version اولویت خواهد داشت.

-h, --help

خلاصه دستور و فهرستی از پرکاربردترین دستورات را چاپ می‌کند. اگر گزینه --all یا -a داده شود، همه دستورات موجود چاپ می‌شوند. در صورتی که نام یک دستور گیت مشخص شده باشد، این گزینه صفحه راهنمای آن دستور را باز می‌کند.

گزینه‌های دیگری برای کنترل نحوه نمایش صفحه راهنما در دسترس هستند. برای اطلاعات بیشتر به git-help(1) مراجعه کنید، زیرا git --help ... در داخل به git help ... تبدیل می‌شود.

-C <path>

طوری اجرا می‌شود که گویی گیت به جای دایرکتوری کاری فعلی، در <path> آغاز شده است. هنگامی که چندین گزینه -C داده شود، هر -C <path> غیرمطلق بعدی نسبت به -C <path> پیشین تفسیر می‌شود. اگر <path> وجود داشته باشد اما خالی باشد، مثلاً -C ""، دایرکتوری کاری فعلی بدون تغییر باقی می‌ماند.

این گزینه بر گزینه‌هایی که نام مسیر می‌پذیرند مانند --git-dir و --work-tree تأثیر می‌گذارد، به این ترتیب که تفسیر آن‌ها از نام‌های مسیر نسبت به دایرکتوری کاری ناشی از گزینه -C صورت می‌گیرد. برای مثال فراخوانی‌های زیر با یکدیگر معادل هستند:

git --git-dir=a.git --work-tree=b -C c status
git --git-dir=c/a.git --work-tree=c/b status

-c <name>=<value>

یک پارامتر پیکربندی را به دستور ارسال می‌کند. مقدار داده‌شده مقادیر فایل‌های پیکربندی را بازنویسی می‌کند. انتظار می‌رود <name> با همان قالبی باشد که توسط git config فهرست می‌شود (زیرکلیدهایی که با نقطه از هم جدا شده‌اند).

توجه داشته باشید که حذف = در git -c foo.bar ... مجاز است و مقدار foo.bar را روی مقدار بولی true تنظیم می‌کند (درست همانند کاری که [foo]bar در یک فایل پیکربندی انجام می‌دهد). درج علامت مساوی با یک مقدار خالی (مانند git -c foo.bar= ...) مقدار foo.bar را روی رشته خالی تنظیم می‌کند که git config --type=bool آن را به false تبدیل خواهد کرد.

--config-env=<name>=<envvar>

مانند -c <name>=<value>، به متغیر پیکربندی <name> مقداری اختصاص می‌دهد که در آن <envvar> نام یک متغیر محیطی است که مقدار از آن دریافت می‌شود. بر خلاف -c هیچ میان‌بری برای تنظیم مستقیم مقدار روی یک رشته خالی وجود ندارد، بلکه خود متغیر محیطی باید روی رشته خالی تنظیم شده باشد. اگر <envvar> در محیط وجود نداشته باشد، یک خطا محسوب می‌شود. <envvar> جهت جلوگیری از ابهام با مواردی که <name> شامل علامت مساوی است، نباید حاوی علامت مساوی باشد.

این گزینه برای مواردی کاربرد دارد که می‌خواهید گزینه‌های پیکربندی موقت را به گیت منتقل کنید، اما در سیستم‌عامل‌هایی فعالیت می‌کنید که سایر فرایندها ممکن است قادر به خواندن خط فرمان شما باشند (مانند /proc/self/cmdline)، اما نتوانند متغیرهای محیطی شما را بخوانند (مانند /proc/self/environ). این رفتار در لینوکس به صورت پیش‌فرض است، اما ممکن است در سیستم شما این‌گونه نباشد.

توجه داشته باشید که این ممکن است امنیت متغیرهایی مانند http.extraHeader را افزایش دهد که در آن‌ها اطلاعات حساس بخشی از مقدار است، اما مثلاً برای url.<base>.insteadOf که اطلاعات حساس می‌تواند بخشی از کلید باشد، امنیتی ایجاد نمی‌کند.

--exec-path[=<path>]

مسیر محل نصب برنامه‌های اصلی گیت. این مورد را می‌توان با تنظیم متغیر محیطی GIT_EXEC_PATH نیز کنترل کرد. در صورت مشخص نشدن مسیر، git تنظیمات فعلی را چاپ کرده و خارج می‌شود.

--html-path

مسیری را که مستندات HTML گیت در آن نصب شده است (بدون اسلش پایانی) چاپ کرده و خارج می‌شود.

--man-path

مسیر manpath (نگاه کنید به man(1)) را برای صفحات راهنمای این نسخه از گیت چاپ کرده و خارج می‌شود.

--info-path

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

-p, --paginate

در صورتی که خروجی استاندارد یک ترمینال باشد، همه خروجی را به less (یا در صورت تنظیم، $PAGER) هدایت (pipe) می‌کند. این گزینه بر گزینه‌های پیکربندی pager.<cmd> اولویت دارد (بخش «سازوکار پیکربندی» در زیر را ببینید).

-P, --no-pager

خروجی گیت را به هیچ صفحه‌بندی (pager) هدایت نمی‌کند.

--git-dir=<path>

مسیر مخزن (دایرکتوری ".git") را تعیین می‌کند. این را می‌توان با تنظیم متغیر محیطی GIT_DIR نیز کنترل کرد. این مقدار می‌تواند یک مسیر مطلق یا یک مسیر نسبی به دایرکتوری کاری فعلی باشد.

مشخص کردن مکان دایرکتوری ".git" با استفاده از این گزینه (یا متغیر محیطی GIT_DIR) سازوکار شناسایی خودکار مخزن را که تلاش می‌کند دایرکتوری حاوی زیرپوشه ".git" را بیابد (روشی که مخزن و بالاترین سطح درخت کاری کشف می‌شوند) غیرفعال می‌کند و به گیت اعلام می‌دارد که شما در بالاترین سطح درخت کاری قرار دارید. اگر در دایرکتوری بالاترین سطح درخت کاری نیستید، باید با استفاده از گزینه --work-tree=<path> (یا متغیر محیطی GIT_WORK_TREE) مکان بالاترین سطح درخت کاری را به گیت معرفی کنید.

اگر فقط می‌خواهید گیت طوری اجرا شود که گویی در <path> آغاز به کار کرده است، از git -C <path> استفاده کنید.

--work-tree=<path>

مسیر درخت کاری را تعیین می‌کند. این می‌تواند یک مسیر مطلق یا یک مسیر نسبی به دایرکتوری کاری فعلی باشد. این را می‌توان با تنظیم متغیر محیطی GIT_WORK_TREE و متغیر پیکربندی core.worktree نیز کنترل کرد (برای توضیحات دقیق‌تر مدخل core.worktree را در git-config(1) ببینید).

--namespace=<path>

فضای نام گیت را تعیین می‌کند. برای جزئیات بیشتر به gitnamespaces(7) مراجعه کنید. معادل تنظیم متغیر محیطی GIT_NAMESPACE است.

--bare

با مخزن همانند یک مخزن لخت (bare) رفتار می‌کند. اگر متغیر محیطی GIT_DIR تنظیم نشده باشد، روی دایرکتوری کاری فعلی تنظیم می‌شود.

--no-replace-objects

از ارجاعات جایگزین (replacement refs) برای جایگزینی شیءهای گیت استفاده نمی‌کند. این معادل صدور متغیر محیطی GIT_NO_REPLACE_OBJECTS با هر مقداری است. برای اطلاعات بیشتر git-replace(1) را ببینید.

--no-lazy-fetch

شیءهای ناموجود را بر حسب تقاضا از ریموت متعهد (promisor remote) واکشی نمی‌کند. همراه با git cat-file -e <object> برای بررسی اینکه آیا شیء به صورت محلی در دسترس است یا خیر بسیار کاربردی است. این معادل تنظیم متغیر محیطی GIT_NO_LAZY_FETCH روی 1 است.

--no-optional-locks

عملیات اختیاری نیازمند قفل را انجام نمی‌دهد. این معادل تنظیم متغیر محیطی GIT_OPTIONAL_LOCKS روی 0 است.

--no-advice

نمایش تمامی پیام‌های راهنمایی و توصیه (advice hints) را غیرفعال می‌کند.

--literal-pathspecs

با الگوهای مسیر (pathspecs) به صورت تحت‌اللفظی رفتار می‌کند (بدون تطبیق الگو یا globbing و بدون جادوی pathspec). این معادل تنظیم متغیر محیطی GIT_LITERAL_PATHSPECS روی 1 است.

--glob-pathspecs

جادوی "glob" را به همه الگوهای مسیر اضافه می‌کند. این معادل تنظیم متغیر محیطی GIT_GLOB_PATHSPECS روی 1 است. غیرفعال کردن globbing روی تک‌تک الگوهای مسیر با استفاده از جادوی الگوی مسیر ":(literal)" امکان‌پذیر است.

--noglob-pathspecs

جادوی "literal" را به همه الگوهای مسیر اضافه می‌کند. این معادل تنظیم متغیر محیطی GIT_NOGLOB_PATHSPECS روی 1 است. فعال کردن globbing روی تک‌تک الگوهای مسیر با استفاده از جادوی الگوی مسیر ":(glob)" امکان‌پذیر است.

--icase-pathspecs

جادوی "icase" (حساس نبودن به بزرگی و کوچکی حروف) را به همه الگوهای مسیر اضافه می‌کند. این معادل تنظیم متغیر محیطی GIT_ICASE_PATHSPECS روی 1 است.

--list-cmds=<group>[,<group>...]

دستورات را بر پایه گروه فهرست می‌کند. این یک گزینه داخلی/آزمایشی است و ممکن است در آینده تغییر کند یا حذف شود. گروه‌های پشتیبانی‌شده عبارتند از: builtins، parseopt (دستورات توکاری که از parse-options استفاده می‌کنند)، deprecated (دستورات توکار منسوخ‌شده)، main (همه دستورات موجود در دایرکتوری libexec)، others (همه دستورات دیگر در $PATH که پیشوند -git دارند)، list-<category> (دسته‌بندی‌های موجود در command-list.txt را ببینید)، nohelpers (مستثنی کردن دستورات کمکی)، alias و config (دریافت فهرست دستورات از متغیر پیکربندی completion.commands).

--attr-source=<tree-ish>

ویژگی‌های gitattributes را به جای درخت کاری، از <tree-ish> می‌خواند. به gitattributes(5) مراجعه کنید. این معادل تنظیم متغیر محیطی GIT_ATTR_SOURCE است.

ما گیت را به دستورات سطح بالا ("پورسلین") و دستورات سطح پایین ("پلامبینگ") تقسیم می‌کنیم. برای تعریف نام‌های مستعار دستورات، به ?Bgit-config?R(1) مراجعه کرده و توضیحات ?Balias.*?R را بررسی کنید. برای نصب زیردستورهای سفارشی "git"، توضیحات مربوط به متغیر محیطی ?IPATH?R را در این راهنما ببینید.

ما دستورات پورسلین را به دستورات اصلی و برخی ابزارهای کمکی کاربر تفکیک می‌کنیم.

?Bgit-add?R(1)

افزودن محتوای فایل به ایندکس.

?Bgit-am?R(1)

اعمال مجموعه‌ای از وصله‌ها از یک صندوق پستی (mailbox).

?Bgit-archive?R(1)

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

?Bgit-backfill?R(1)

بارگیری شیءهای ناموجود در یک کلون جزئی.

?Bgit-bisect?R(1)

استفاده از جستجوی دودویی برای یافتن کامیتی که باگ را معرفی کرده است.

?Bgit-branch?R(1)

فهرست کردن، ایجاد یا حذف شاخه‌ها.

?Bgit-bundle?R(1)

انتقال شیءها و ارجاعات با استفاده از فایل آرشیو (بسته).

?Bgit-checkout?R(1)

تعویض شاخه‌ها یا بازیابی فایل‌های درخت کاری.

?Bgit-cherry-pick?R(1)

اعمال تغییرات معرفی‌شده توسط برخی کامیت‌های موجود.

?Bgit-citool?R(1)

جایگزین گرافیکی برای git-commit.

?Bgit-clean?R(1)

حذف فایل‌های ردیابی‌نشده از درخت کاری.

?Bgit-clone?R(1)

کلون کردن یک مخزن درون یک دایرکتوری جدید.

?Bgit-commit?R(1)

ثبت تغییرات در مخزن.

?Bgit-describe?R(1)

اختصاص یک نام خوانا برای انسان به یک شیء بر پایه یک ارجاع در دسترس.

?Bgit-diff?R(1)

نمایش تغییرات بین کامیت‌ها، کامیت و درخت کاری، و غیره.

?Bgit-fetch?R(1)

بارگیری شیءها و ارجاعات از مخزنی دیگر.

?Bgit-format-patch?R(1)

آماده‌سازی وصله‌ها برای ارسال با رایانامه.

?Bgit-gc?R(1)

پاک‌سازی فایل‌های غیرضروری و بهینه‌سازی مخزن محلی.

?Bgit-grep?R(1)

چاپ خطوط منطبق بر یک الگو.

?Bgit-gui?R(1)

یک رابط گرافیکی پرتابل برای گیت.

?Bgit-history?R(1)

آزمایشی: بازنویسی تاریخچه.

?Bgit-init?R(1)

ایجاد یک مخزن خالی گیت یا راه‌اندازی مجدد یک مخزن موجود.

?Bgit-log?R(1)

نمایش گزارش‌های کامیت (لاگ‌ها).

?Bgit-maintenance?R(1)

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

?Bgit-merge?R(1)

پیوند دادن دو یا چند تاریخچه توسعه به یکدیگر.

?Bgit-mv?R(1)

جابجایی یا تغییر نام یک فایل، دایرکتوری یا پیوند نمادین.

?Bgit-notes?R(1)

افزودن یا بازرسی یادداشت‌های شیء.

?Bgit-pull?R(1)

واکشی از یک مخزن دیگر یا شاخه محلی و ادغام با آن.

?Bgit-push?R(1)

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

?Bgit-range-diff?R(1)

مقایسه دو محدوده کامیت (مثلاً دو نسخه از یک شاخه).

?Bgit-rebase?R(1)

اعمال مجدد کامیت‌ها بر روی نوک شاخه‌ای دیگر.

?Bgit-reset?R(1)

تنظیم ?BHEAD?R یا ایندکس به یک وضعیت مشخص.

?Bgit-restore?R(1)

بازیابی فایل‌های درخت کاری.

?Bgit-revert?R(1)

بازگردانی برخی از کامیت‌های موجود.

?Bgit-rm?R(1)

حذف فایل‌ها از درخت کاری و از ایندکس.

?Bgit-shortlog?R(1)

خلاصه‌سازی خروجی ?Bgit?R ?Blog?R.

?Bgit-show?R(1)

نمایش انواع مختلف شیءها.

?Bgit-sparse-checkout?R(1)

کاهش درخت کاری شما به زیرمجموعه‌ای از فایل‌های ردیابی‌شده.

?Bgit-stash?R(1)

ذخیره موقت تغییرات در یک دایرکتوری کاری تغییریافته.

?Bgit-status?R(1)

نمایش وضعیت درخت کاری.

?Bgit-submodule?R(1)

راه‌اندازی اولیه، به‌روزرسانی یا بازرسی زیرپیمانه‌ها.

?Bgit-switch?R(1)

تعویض شاخه‌ها.

?Bgit-tag?R(1)

ایجاد، فهرست کردن، حذف یا اعتبارسنجی تگ‌ها.

?Bgit-worktree?R(1)

مدیریت چندین درخت کاری.

?Bgitk?R(1)

مرورگر مخزن گیت.

?Bgit-config?R(1)

دریافت و تنظیم گزینه‌های مخزن یا گزینه‌های سراسری.

?Bgit-fast-export?R(1)

صادرکننده داده‌های گیت.

?Bgit-fast-import?R(1)

بخش پسین برای واردکننده‌های سریع داده‌های گیت.

?Bgit-filter-branch?R(1)

بازنویسی شاخه‌ها.

?Bgit-mergetool?R(1)

اجرای ابزارهای رفع تداخل برای حل تعارض‌های ادغام.

?Bgit-pack-refs?R(1)

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

?Bgit-prune?R(1)

هرس کردن تمامی شیءهای غیرقابل دسترسی از پایگاه داده شیءها.

?Bgit-reflog?R(1)

مدیریت اطلاعات گزارش ارجاعات (reflog).

?Bgit-refs?R(1)

دسترسی سطح پایین به ارجاعات.

?Bgit-remote?R(1)

مدیریت مجموعه‌ای از مخازن ردیابی‌شده.

?Bgit-repack?R(1)

بسته‌بندی شیءهای بسته‌بندی‌نشده در یک مخزن.

?Bgit-replace?R(1)

ایجاد، فهرست کردن و حذف ارجاعات برای جایگزینی شیءها.

?Bgit-annotate?R(1)

حاشیه‌نویسی خطوط فایل با اطلاعات کامیت.

?Bgit-blame?R(1)

نمایش اینکه کدام بازبینی و نویسنده آخرین بار هر خط از یک فایل را اصلاح کرده است.

?Bgit-bugreport?R(1)

جمع‌آوری اطلاعات برای کاربر جهت ثبت گزارش اشکال.

?Bgit-count-objects?R(1)

شمارش تعداد شیءهای بسته‌بندی‌نشده و میزان مصرف فضای دیسک آن‌ها.

?Bgit-diagnose?R(1)

تولید یک آرشیو zip از اطلاعات تشخیصی.

?Bgit-difftool?R(1)

نمایش تغییرات با استفاده از ابزارهای متداول diff.

?Bgit-fsck?R(1)

بررسی اتصال و صحت شیءها در پایگاه داده.

?Bgit-help?R(1)

نمایش اطلاعات راهنما درباره گیت.

?Bgit-instaweb?R(1)

مرور فوری مخزن کاری در gitweb.

?Bgit-merge-tree?R(1)

انجام ادغام بدون دستکاری ایندکس یا درخت کاری.

?Bgit-rerere?R(1)

استفاده مجدد از راه‌حل‌های ثبت‌شده تداخل‌های ادغام.

?Bgit-show-branch?R(1)

نمایش شاخه‌ها و کامیت‌های آن‌ها.

?Bgit-verify-commit?R(1)

بررسی امضای GPG کامیت‌ها.

?Bgit-verify-tag?R(1)

بررسی امضای GPG تگ‌ها.

?Bgit-version?R(1)

نمایش اطلاعات نسخه گیت.

?Bgit-whatchanged?R(1)

نمایش گزارش‌ها همراه با تفاوت‌هایی که هر کامیت اعمال می‌کند.

?Bgitweb?R(1)

رابط کاربری تحت وب گیت (پیشخوان وب برای مخازن گیت).

?Bgit-archimport?R(1)

وارد کردن یک مخزن GNU Arch به گیت.

?Bgit-cvsexportcommit?R(1)

صادر کردن یک کامیت منفرد به یک چک‌اوت CVS.

?Bgit-cvsimport?R(1)

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

?Bgit-cvsserver?R(1)

یک شبیه‌ساز سرور CVS برای گیت.

?Bgit-imap-send?R(1)

ارسال مجموعه‌ای از وصله‌ها از ورودی استاندارد به یک پوشه IMAP.

?Bgit-p4?R(1)

وارد کردن از و ارسال به مخازن Perforce.

?Bgit-quiltimport?R(1)

اعمال یک مجموعه وصله quilt روی شاخه فعلی.

?Bgit-request-pull?R(1)

تولید خلاصه‌ای از تغییرات در حال انتظار.

?Bgit-send-email?R(1)

ارسال مجموعه‌ای از وصله‌ها به صورت رایانامه.

?Bgit-svn?R(1)

عملیات دوطرفه میان یک مخزن Subversion و گیت.

سه دستور با نام‌های مشابه وجود دارند: ?Bgit?R ?Breset?R، ?Bgit?R ?Brestore?R و ?Bgit?R ?Brevert?R.

•?Bgit-revert?R(1) مربوط به ایجاد یک کامیت جدید است که تغییرات اعمال‌شده توسط کامیت‌های دیگر را بازمی‌گرداند.
•?Bgit-restore?R(1) مربوط به بازیابی فایل‌ها در درخت کاری از ایندکس یا از یک کامیت دیگر است. این دستور شاخه شما را به‌روزرسانی نمی‌کند. این دستور همچنین می‌تواند برای بازیابی فایل‌ها در ایندکس از یک کامیت دیگر استفاده شود.
•?Bgit-reset?R(1) مربوط به به‌روزرسانی شاخه شما و جابجا کردن نوک شاخه به منظور افزودن یا حذف کامیت‌ها از شاخه است. این عملیات تاریخچه کامیت‌ها را تغییر می‌دهد.

?Bgit?R ?Breset?R همچنین می‌تواند برای بازیابی ایندکس استفاده شود که با ?Bgit?R ?Brestore?R هم‌پوشانی دارد.

اگرچه گیت شامل لایه پورسلین ویژه خود است، اما دستورات سطح پایین آن برای پشتیبانی از توسعه لایه‌های پورسلین جایگزین کافی هستند. توسعه‌دهندگان چنین پورسلین‌هایی می‌توانند با مطالعه درباره ?Bgit-update-index?R(1) و ?Bgit-read-tree?R(1) شروع کنند.

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

?Bgit-apply?R(1)

اعمال یک وصله بر روی فایل‌ها و/یا بر روی ایندکس.

?Bgit-checkout-index?R(1)

کپی کردن فایل‌ها از ایندکس به درخت کاری.

?Bgit-commit-graph?R(1)

نوشتن و اعتبارسنجی فایل‌های commit-graph گیت.

?Bgit-commit-tree?R(1)

ایجاد یک شیء کامیت جدید.

?Bgit-hash-object?R(1)

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

?Bgit-index-pack?R(1)

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

?Bgit-merge-file?R(1)

اجرای ادغام سه‌طرفه فایل‌ها.

?Bgit-merge-index?R(1)

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

?Bgit-mktag?R(1)

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

?Bgit-mktree?R(1)

ساخت یک شیء درخت از روی متن قالب‌بندی‌شده ls-tree.

?Bgit-multi-pack-index?R(1)

نوشتن و اعتبارسنجی ایندکس‌های چندبسته‌ای.

?Bgit-pack-objects?R(1)

ایجاد یک آرشیو بسته‌بندی‌شده از شیءها.

?Bgit-prune-packed?R(1)

حذف شیءهای اضافی که پیش‌تر در فایل‌های بسته قرار گرفته‌اند.

?Bgit-read-tree?R(1)

خواندن اطلاعات درخت به درون ایندکس.

?Bgit-replay?R(1)

آزمایشی: بازپخش کامیت‌ها بر روی یک پایه جدید، با مخازن لخت نیز کار می‌کند.

?Bgit-symbolic-ref?R(1)

خواندن، تغییر و حذف ارجاعات نمادین.

?Bgit-unpack-objects?R(1)

باز کردن شیءها از یک آرشیو بسته‌بندی‌شده.

?Bgit-update-index?R(1)

ثبت محتویات فایل در درخت کاری درون ایندکس.

?Bgit-update-ref?R(1)

به‌روزرسانی امن نام شیء ذخیره‌شده در یک ارجاع.

?Bgit-write-tree?R(1)

ایجاد یک شیء درخت از ایندکس فعلی.

?Bgit-cat-file?R(1)

ارائه محتوا یا جزئیات شیءهای مخزن.

?Bgit-cherry?R(1)

یافتن کامیت‌هایی که هنوز به بالادست اعمال نشده‌اند.

?Bgit-diff-files?R(1)

مقایسه فایل‌ها در درخت کاری و ایندکس.

?Bgit-diff-index?R(1)

مقایسه یک درخت با درخت کاری یا ایندکس.

?Bgit-diff-pairs?R(1)

مقایسه محتوا و حالت جفت‌های blob ارائه‌شده.

?Bgit-diff-tree?R(1)

مقایسه محتوا و حالت blobهای یافت‌شده از طریق دو شیء درخت.

?Bgit-for-each-ref?R(1)

خروجی دادن اطلاعات درباره هر ارجاع.

?Bgit-for-each-repo?R(1)

اجرای یک دستور گیت روی فهرستی از مخازن.

?Bgit-format-rev?R(1)

آزمایشی: قالب‌بندی زیبای بازبینی‌ها بر حسب تقاضا.

?Bgit-get-tar-commit-id?R(1)

استخراج شناسه کامیت از یک آرشیو ایجادشده با git-archive.

?Bgit-last-modified?R(1)

آزمایشی: نمایش زمان آخرین تغییر فایل‌ها.

?Bgit-ls-files?R(1)

نمایش اطلاعات درباره فایل‌ها در ایندکس و درخت کاری.

?Bgit-ls-remote?R(1)

فهرست کردن ارجاعات در یک مخزن راه‌دور.

?Bgit-ls-tree?R(1)

فهرست کردن محتوای یک شیء درخت.

?Bgit-merge-base?R(1)

یافتن بهترین نیاکان مشترک ممکن برای یک ادغام.

?Bgit-name-rev?R(1)

یافتن نام‌های نمادین برای بازبینی‌های مشخص‌شده.

?Bgit-pack-redundant?R(1)

یافتن فایل‌های بسته زائد.

?Bgit-repo?R(1)

بازیابی اطلاعات درباره مخزن.

?Bgit-rev-list?R(1)

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

?Bgit-rev-parse?R(1)

جداسازی و پردازش پارامترها.

?Bgit-show-index?R(1)

نمایش ایندکس آرشیو بسته‌بندی‌شده.

?Bgit-show-ref?R(1)

فهرست کردن ارجاعات در یک مخزن محلی.

?Bgit-unpack-file?R(1)

ایجاد یک فایل موقت با محتوای یک blob.

?Bgit-var?R(1)

نمایش یک متغیر منطقی گیت.

?Bgit-verify-pack?R(1)

اعتبارسنجی فایل‌های آرشیو بسته گیت.

?Bgit-daemon?R(1)

یک سرور بسیار ساده برای مخازن گیت.

?Bgit-fetch-pack?R(1)

دریافت شیءهای ناموجود از یک مخزن دیگر.

?Bgit-http-backend?R(1)

پیاده‌سازی سمت سرور گیت از طریق HTTP.

?Bgit-send-pack?R(1)

ارسال شیءها از طریق پروتکل گیت به مخزنی دیگر.

?Bgit-update-server-info?R(1)

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

?Bgit-http-fetch?R(1)

بارگیری از یک مخزن راه‌دور گیت از طریق HTTP.

?Bgit-http-push?R(1)

ارسال شیءها از طریق HTTP/DAV به مخزنی دیگر.

?Bgit-receive-pack?R(1)

دریافت آنچه به درون مخزن ارسال (push) می‌شود.

?Bgit-shell?R(1)

پوسته ورود محدودشده برای دسترسی SSH صرفاً ویژه گیت.

?Bgit-upload-archive?R(1)

ارسال مجدد آرشیو به git-archive.

?Bgit-upload-pack?R(1)

ارسال شیءهای بسته‌بندی‌شده به git-fetch-pack.

?Bgit-check-attr?R(1)

نمایش اطلاعات gitattributes.

?Bgit-check-ignore?R(1)

اشکال‌زدایی فایل‌های gitignore / exclude.

?Bgit-check-mailmap?R(1)

نمایش نام‌های رسمی و نشانی‌های رایانامه مخاطبان.

?Bgit-check-ref-format?R(1)

اطمینان از خوش‌ساخت بودن یک نام ارجاع.

?Bgit-column?R(1)

نمایش داده‌ها در ستون‌ها.

?Bgit-credential?R(1)

بازیابی و ذخیره‌سازی اطلاعات اعتباری (احراز هویت) کاربر.

?Bgit-credential-cache?R(1)

برنامه کمکی برای ذخیره موقت گذرواژه‌ها در حافظه.

?Bgit-credential-store?R(1)

برنامه کمکی برای ذخیره اطلاعات اعتباری روی دیسک.

?Bgit-fmt-merge-msg?R(1)

تولید یک پیام کامیت ادغام.

?Bgit-hook?R(1)

اجرای هوک‌های گیت.

?Bgit-interpret-trailers?R(1)

افزودن یا تجزیه اطلاعات ساختاریافته در پیام‌های کامیت.

?Bgit-mailinfo?R(1)

استخراج وصله و اطلاعات نویسنده از یک پیام رایانامه منفرد.

?Bgit-mailsplit?R(1)

برنامه ساده تفکیک‌کننده mbox یونیکس.

?Bgit-merge-one-file?R(1)

برنامه کمکی استاندارد برای استفاده همراه با git-merge-index.

?Bgit-patch-id?R(1)

محاسبه شناسه‌های یکتا برای وصله‌ها.

?Bgit-sh-i18n?R(1)

کد راه‌اندازی بین‌المللی‌سازی (i18n) گیت برای اسکریپت‌های شل.

?Bgit-sh-setup?R(1)

کد مشترک راه‌اندازی اسکریپت شل گیت.

?Bgit-stripspace?R(1)

حذف فاصله‌های خالی غیرضروری.

?Bgit-url-parse?R(1)

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

صفحات مستندات زیر راهنماهایی پیرامون مفاهیم گیت هستند.

gitcore-tutorial(7)

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

gitcredentials(7)

ارائه نام‌های کاربری و گذرواژه‌ها به گیت.

gitcvs-migration(7)

گیت برای کاربران CVS.

gitdiffcore(7)

تنظیم دقیق خروجی diff.

giteveryday(7)

مجموعه‌ای مفید و حداقل از دستورات برای استفاده روزمره از گیت.

gitfaq(7)

پرسش‌های متداول درباره استفاده از گیت.

gitglossary(7)

واژه‌نامه اصطلاحات گیت.

gitnamespaces(7)

فضاهای نام گیت.

gitremote-helpers(7)

برنامه‌های کمکی برای تعامل با مخازن راه‌دور.

gitsubmodules(7)

سوار کردن یک مخزن درون مخزنی دیگر.

gittutorial(7)

آموزش مقدماتی گیت.

gittutorial-2(7)

آموزش مقدماتی گیت: بخش دوم.

gitworkflows(7)

مروری بر جریان‌های کاری توصیه‌شده در گیت.

این مستندات به بررسی رابط‌های مخزن و دستوری می‌پردازند که انتظار می‌رود کاربران مستقیماً با آن‌ها تعامل داشته باشند. برای جزئیات بیشتر پیرامون این معیارها، مدخل --user-formats را در git-help(1) ببینید.

gitattributes(5)

تعریف ویژگی‌ها به ازای هر مسیر.

gitcli(7)

رابط خط فرمان و قراردادهای گیت.

githooks(5)

هوک‌های مورد استفاده توسط گیت.

gitignore(5)

مشخص کردن فایل‌های عمداً ردیابی‌نشده برای نادیده گرفتن.

gitmailmap(5)

نگاشت نام‌ها و/یا نشانی‌های رایانامه نویسنده/کامیت‌کننده.

gitmodules(5)

تعریف ویژگی‌های زیرپیمانه.

gitrepository-layout(5)

چیدمان ساختار مخزن گیت.

gitrevisions(7)

مشخص کردن بازبینی‌ها و محدوده‌ها برای گیت.

این مستندات به بررسی قالب‌های فایل، پروتکل‌های ارتباطی شبکه و سایر رابط‌های توسعه‌دهنده گیت می‌پردازند. مدخل --developer-interfaces را در git-help(1) ببینید.

gitformat-bundle(5)

قالب فایل بسته آرشیو (bundle).

gitformat-chunk(5)

قالب‌های فایل مبتنی بر تکه (chunk).

gitformat-commit-graph(5)

قالب فایل commit-graph گیت.

gitformat-index(5)

قالب ایندکس گیت.

gitformat-pack(5)

قالب بسته (pack) گیت.

gitformat-signature(5)

قالب‌های امضای رمزنگاری‌شده گیت.

gitprotocol-capabilities(5)

قابلیت‌های نسخه ۰ و نسخه ۱ پروتکل.

gitprotocol-common(5)

موارد مشترک میان پروتکل‌های گوناگون.

gitprotocol-http(5)

پروتکل‌های مبتنی بر HTTP گیت.

gitprotocol-pack(5)

نحوه انتقال بسته‌ها بر روی شبکه.

gitprotocol-v2(5)

پروتکل ارتباطی شبکه گیت، نسخه ۲.

گیت از یک قالب متنی ساده برای ذخیره‌سازی سفارشی‌سازی‌های مربوط به هر مخزن و هر کاربر استفاده می‌کند. چنین فایل پیکربندی ممکن است به این شکل باشد:

#
# نویسه '#' یا ';' بیانگر یک توضیح است.
#
; متغیرهای هسته
[core]
        ; به حالت‌های فایل اعتماد نکن
        filemode = false
; هویت کاربر
[user]
        name = "Junio C Hamano"
        email = "gitster@pobox.com"

دستورات گوناگون مقادیر را از فایل پیکربندی خوانده و عملکرد خود را بر همان اساس تنظیم می‌کنند. برای دریافت فهرست و جزئیات بیشتر پیرامون سازوکار پیکربندی به git-config(1) مراجعه کنید.

<object>

بیانگر نام شیء برای هر نوع از شیءها است.

<blob>

بیانگر نام شیء blob است.

<tree>

بیانگر نام شیء درخت (tree) است.

<commit>

بیانگر نام شیء کامیت است.

<tree-ish>

بیانگر نام شیء درخت، کامیت یا تگ است. دستوری که یک شناسه <tree-ish> می‌پذیرد در نهایت مایل است روی یک شیء <tree> عمل کند، اما به صورت خودکار ارجاع شیءهای <commit> و <tag> را که به یک <tree> اشاره می‌کنند بازگشایی (dereference) می‌کند.

<commit-ish>

بیانگر نام شیء کامیت یا تگ است. دستوری که یک شناسه <commit-ish> می‌پذیرد در نهایت مایل است روی یک شیء <commit> عمل کند، اما به صورت خودکار ارجاع شیءهای <tag> را که به یک <commit> اشاره دارند بازگشایی می‌کند.

<type>

نشان می‌دهد که نوع شیء الزامی است. در حال حاضر یکی از موارد زیر است: blob، tree، commit، یا tag.

<file>

بیانگر یک نام فایل است - تقریباً همیشه نسبت به ریشه ساختار درختی که GIT_INDEX_FILE توصیف می‌کند سنجیده می‌شود.

هر دستور گیت که هر نوع <object> را می‌پذیرد می‌تواند از نشانه‌گذاری نمادین زیر نیز استفاده کند:

HEAD

بیانگر نوک شاخه فعلی است.

<tag>

یک تگ معتبر name (یعنی ارجاع refs/tags/<tag>).

<head>

یک شاخه معتبر name (یعنی ارجاع refs/heads/<head>).

برای مشاهده فهرستی کامل‌تر از روش‌های نگارش نام‌های شیء، بخش "SPECIFYING REVISIONS" را در gitrevisions(7) ببینید.

لطفاً مستند gitrepository-layout(5) را ببینید.

برای جزئیات بیشتر درباره هر هوک، githooks(5) را بخوانید.

سامانه‌های مدیریت پیکربندی سطح بالاتر ممکن است اطلاعات بیشتری را در $GIT_DIR ارائه کرده و مدیریت کنند.

لطفاً gitglossary(7) را ببینید.

دستورات گوناگون گیت به متغیرهای محیطی توجه کرده و رفتار خود را تغییر می‌دهند. متغیرهای محیطی که به عنوان "بولی" (Boolean) مشخص شده‌اند، مقادیر خود را به همان روش متغیرهای پیکربندی بولی دریافت می‌کنند؛ یعنی "true"، "yes"، "on" و اعداد مثبت به عنوان "yes"، در حالی که "false"، "no"، "off" و "0" به عنوان "no" در نظر گرفته می‌شوند.

این متغیرها به شرح زیر هستند:

HOME

مسیر دایرکتوری خانگی کاربر را مشخص می‌کند. در ویندوز، اگر تنظیم نشده باشد، گیت یک متغیر محیطی فرایند را برابر با: $HOMEDRIVE$HOMEPATH تنظیم می‌کند اگر هر دو متغیر $HOMEDRIVE و $HOMEPATH وجود داشته باشند؛ در غیر این صورت روی $USERPROFILE تنظیم می‌شود اگر $USERPROFILE موجود باشد.

PATH

هنگامی که کاربر دستور git <command> را اجرا می‌کند که بخشی از برنامه‌های اصلی گیت (نصب‌شده در GIT_EXEC_PATH) نیست، دستور git-<command> که توسط کاربر در دایرکتوری موجود در $PATH قابل اجرا باشد فراخوانی می‌شود. آرگومان‌های ارائه‌شده پس از نام دستور، عیناً به برنامه منتقل می‌شوند. برای اجرای git <foo>، گیت پیش از امتحان کردن foo به عنوان یک نام مستعار، ابتدا به دنبال دستور <foo> می‌گردد (خواه یک برنامه اصلی گیت در GIT_EXEC_PATH باشد، یا یک برنامه سفارشی در دایرکتوری موجود در PATH).

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

GIT_INDEX_FILE

این متغیر محیطی یک فایل ایندکس جایگزین را مشخص می‌کند. در صورت مشخص نشدن، مقدار پیش‌فرض $GIT_DIR/index استفاده می‌شود.

GIT_INDEX_VERSION

این متغیر محیطی مشخص می‌کند هنگام نوشتن فایل ایندکس، از چه نسخه‌ای از ایندکس استفاده شود. این متغیر بر فایل‌های ایندکس موجود تأثیری ندارد. به طور پیش‌فرض نسخه ۲ یا ۳ فایل ایندکس به کار می‌رود. برای اطلاعات بیشتر به git-update-index(1) مراجعه کنید.

GIT_OBJECT_DIRECTORY

اگر دایرکتوری ذخیره‌سازی شیء از طریق این متغیر محیطی مشخص شود، دایرکتوری‌های sha1 در زیر آن ایجاد می‌شوند؛ در غیر این صورت دایرکتوری پیش‌فرض $GIT_DIR/objects استفاده می‌شود.

GIT_ALTERNATE_OBJECT_DIRECTORIES

به دلیل ماهیت تغییرناپذیر شیءهای گیت، شیءهای قدیمی می‌توانند در دایرکتوری‌های اشتراکی و فقط‌خواندنی آرشیو شوند. این متغیر فهرستی از دایرکتوری‌های شیء گیت را مشخص می‌کند که با ":" (در ویندوز با ";") از هم جدا شده‌اند و می‌توان برای جستجوی شیءهای گیت از آن‌ها استفاده کرد. شیءهای جدید در این دایرکتوری‌ها نوشته نخواهند شد.

مداخلاتی که با " (نقل‌قول دوتایی) آغاز می‌شوند به عنوان مسیرهای نقل‌قول‌شده به سبک C تفسیر می‌گردند، بدین‌صورت که نقل‌قول‌های دوتایی ابتدایی و انتهایی حذف شده و نویسه‌های اسکیپ با بک‌اسلش رعایت می‌شوند. برای مثال مقدار "path-with-\"-and-:-in-it":vanilla-path دارای دو مسیر است: path-with-"-and-:-in-it و vanilla-path.

GIT_DIR

اگر متغیر محیطی GIT_DIR تنظیم شده باشد، مسیری را مشخص می‌کند که به جای دایرکتوری پیش‌فرض .git به عنوان پایه مخزن استفاده شود. گزینه خط فرمان --git-dir نیز این مقدار را تنظیم می‌کند.

GIT_WORK_TREE

مسیر ریشه درخت کاری را تنظیم می‌کند. این را می‌توان با گزینه خط فرمان --work-tree و متغیر پیکربندی core.worktree نیز کنترل کرد.

GIT_NAMESPACE

فضای نام گیت را تنظیم می‌کند؛ برای جزئیات به gitnamespaces(7) مراجعه کنید. گزینه خط فرمان --namespace نیز این مقدار را تنظیم می‌کند.

GIT_CEILING_DIRECTORIES

این متغیر باید فهرستی از مسیرهای مطلق جداشده با دونقطه باشد. در صورت تنظیم، فهرستی از دایرکتوری‌ها است که گیت هنگام جستجو به سمت بالا برای یافتن دایرکتوری مخزن نباید وارد آن‌ها شود (برای مستثنی کردن دایرکتوری‌های کند شبکه بسیار کاربردی است). این متغیر دایرکتوری کاری فعلی یا یک GIT_DIR تنظیم‌شده در خط فرمان یا محیط را مستثنی نمی‌کند. در حالت عادی، گیت باید ورودی‌های این فهرست را خوانده و هر پیوند نمادینی را که ممکن است وجود داشته باشد حل کند تا آن‌ها را با دایرکتوری فعلی مقایسه کند. با این حال، اگر حتی این دسترسی نیز کند باشد، می‌توانید یک ورودی خالی به فهرست بیفزایید تا به گیت اعلام کنید که ورودی‌های بعدی پیوند نمادین نیستند و نیازی به حل آن‌ها نیست؛ برای مثال: GIT_CEILING_DIRECTORIES=/maybe/symlink::/very/slow/non/symlink.

GIT_DISCOVERY_ACROSS_FILESYSTEM

هنگامی که در دایرکتوری فاقد دایرکتوری مخزن ".git" اجرا می‌شود، گیت تلاش می‌کند چنین دایرکتوری‌ای را در دایرکتوری‌های والد پیدا کند تا بالاترین سطح درخت کاری را بیابد، اما به طور پیش‌فرض از مرزهای سیستم فایل عبور نمی‌کند. این متغیر محیطی بولی را می‌توان روی true تنظیم کرد تا به گیت بگوید در مرزهای سیستم فایل متوقف نشود. همانند GIT_CEILING_DIRECTORIES، این متغیر بر دایرکتوری مخزنی که صراحتاً از طریق GIT_DIR یا در خط فرمان تنظیم شده باشد تأثیری نمی‌گذارد.

GIT_COMMON_DIR

اگر این متغیر روی یک مسیر تنظیم شود، فایل‌های غیرمرتبط با درخت کاری که معمولاً در $GIT_DIR هستند از این مسیر برداشته می‌شوند. فایل‌های مختص درخت کاری مانند HEAD یا index از $GIT_DIR خوانده می‌شوند. برای جزئیات به gitrepository-layout(5) و git-worktree(1) مراجعه فرمایید. این متغیر اولویت پایین‌تری نسبت به سایر متغیرهای مسیر مانند GIT_INDEX_FILE ،GIT_OBJECT_DIRECTORY و غیره دارد.

GIT_DEFAULT_HASH

اگر این متغیر تنظیم شود، الگوریتم هش پیش‌فرض برای مخازن جدید روی این مقدار تنظیم می‌گردد. این مقدار هنگام کلون کردن نادیده گرفته می‌شود و همواره از تنظیمات مخزن راه‌دور استفاده می‌شود. مقدار پیش‌فرض "sha1" است. مدخل --object-format را در git-init(1) ببینید.

GIT_DEFAULT_REF_FORMAT

اگر این متغیر تنظیم شود، قالب بخش پسین ارجاع پیش‌فرض برای مخازن جدید روی این مقدار تنظیم خواهد شد. مقدار پیش‌فرض "files" است. مدخل --ref-format را در git-init(1) ببینید.

GIT_REFERENCE_BACKEND

مشخص می‌کند کدام بخش پسین ارجاع همراه با URI آن استفاده شود. برای جزئیات بیشتر به گزینه extensions.refStorage در git-config(1) مراجعه فرمایید. در صورت استفاده، بر متغیر پیکربندی اولویت دارد.

GIT_AUTHOR_NAME

نام خوانا برای انسان که در هویت نویسنده هنگام ایجاد شیءهای کامیت یا تگ، یا هنگام نوشتن reflogها استفاده می‌شود. بر تنظیمات پیکربندی user.name و author.name اولویت دارد.

GIT_AUTHOR_EMAIL

نشانی رایانامه مورد استفاده در هویت نویسنده هنگام ایجاد شیءهای کامیت یا تگ، یا هنگام نوشتن reflogها. بر تنظیمات پیکربندی user.email و author.email اولویت دارد.

GIT_AUTHOR_DATE

تاریخ مورد استفاده برای هویت نویسنده هنگام ایجاد شیءهای کامیت یا تگ، یا هنگام نوشتن reflogها. برای قالب‌های معتبر به git-commit(1) مراجعه کنید.

GIT_COMMITTER_NAME

نام خوانا برای انسان که در هویت کامیت‌کننده هنگام ایجاد شیءهای کامیت یا تگ، یا هنگام نوشتن reflogها استفاده می‌شود. بر تنظیمات پیکربندی user.name و committer.name اولویت دارد.

GIT_COMMITTER_EMAIL

نشانی رایانامه مورد استفاده در هویت کامیت‌کننده هنگام ایجاد شیءهای کامیت یا تگ، یا هنگام نوشتن reflogها. بر تنظیمات پیکربندی user.email و committer.email اولویت دارد.

GIT_COMMITTER_DATE

تاریخ مورد استفاده برای هویت کامیت‌کننده هنگام ایجاد شیءهای کامیت یا تگ، یا هنگام نوشتن reflogها. برای قالب‌های معتبر به git-commit(1) مراجعه کنید.

EMAIL

نشانی رایانامه‌ای که در هویت نویسنده و کامیت‌کننده استفاده می‌شود، در صورتی که هیچ متغیر محیطی یا تنظیم پیکربندی مرتبط دیگری تنظیم نشده باشد.

GIT_DIFF_OPTS

تنها تنظیم معتبر "--unified=??" یا "-u??" برای تنظیم تعداد خطوط زمینه‌ای است که هنگام ایجاد diff یکپارچه نمایش داده می‌شود. این گزینه بر هر مقدار "-U" یا "--unified" ارائه‌شده در خط فرمان git diff اولویت دارد.

GIT_EXTERNAL_DIFF

هنگامی که متغیر محیطی GIT_EXTERNAL_DIFF تنظیم شده باشد، برنامه‌ای که توسط آن نام‌گذاری شده برای تولید diffها فراخوانی می‌شود و گیت از سازوکار داخلی diff خود استفاده نمی‌کند. برای مسیری که اضافه، حذف یا ویرایش شده است، GIT_EXTERNAL_DIFF با ۷ پارامتر فراخوانی می‌شود:
path old-file old-hex old-mode new-file new-hex new-mode

که در آن:

<old|new>-file

فایل‌هایی هستند که GIT_EXTERNAL_DIFF می‌تواند برای خواندن محتوای <old|new> از آن‌ها استفاده کند،

<old|new>-hex

هش‌های ۴۰ نویسه‌ای هگزادسیمال SHA-1 هستند،

<old|new>-mode

نمایش هشت‌هشتی (اکتال) حالت‌های فایل هستند.

پارامترهای فایل می‌توانند به فایل کاری کاربر (مانند new-file در "git-diff-files")، /dev/null (مانند old-file هنگامی که یک فایل جدید افزوده می‌شود)، یا یک فایل موقت (مانند old-file در ایندکس) اشاره کنند. GIT_EXTERNAL_DIFF نباید نگران حذف کردن فایل موقت باشد — این فایل هنگام خروج GIT_EXTERNAL_DIFF حذف می‌شود.

برای مسیری که ادغام‌نشده است، GIT_EXTERNAL_DIFF با ۱ پارامتر، <path>، فراخوانی می‌شود.

به ازای هر مسیری که GIT_EXTERNAL_DIFF فراخوانی می‌شود، دو متغیر محیطی GIT_DIFF_PATH_COUNTER و GIT_DIFF_PATH_TOTAL تنظیم می‌شوند.

GIT_EXTERNAL_DIFF_TRUST_EXIT_CODE

اگر این متغیر محیطی بولی روی true تنظیم شود، انتظار می‌رود دستور GIT_EXTERNAL_DIFF در صورتی که فایل‌های ورودی را برابر بداند کد خروج ۰ و اگر آن‌ها را متفاوت بداند کد خروج ۱ را بازگرداند، همانند diff(1). اگر روی false تنظیم شده باشد که حالت پیش‌فرض است، انتظار می‌رود دستور صرف‌نظر از برابری کد خروج ۰ را بازگرداند. هر کد خروج دیگری باعث می‌شود گیت خطای مهلک گزارش کند.

GIT_DIFF_PATH_COUNTER

یک شمارنده بر پایه ۱ که برای هر مسیر یک واحد افزایش می‌یابد.

GIT_DIFF_PATH_TOTAL

تعداد کل مسیرها.

GIT_MERGE_VERBOSITY

عددی که میزان خروجی ارائه‌شده توسط استراتژی ادغام بازگشتی را کنترل می‌کند. بر merge.verbosity اولویت دارد. به git-merge(1) مراجعه فرمایید.

GIT_PAGER

این متغیر محیطی بر $PAGER اولویت دارد. اگر روی یک رشته خالی یا مقدار "cat" تنظیم شود، گیت هیچ صفحه‌بندی را اجرا نخواهد کرد. همچنین گزینه core.pager را در git-config(1) ببینید.

GIT_PROGRESS_DELAY

عددی که کنترل می‌کند پیش از نمایش نشانگرهای اختیاری پیشرفت چند ثانیه تأخیر ایجاد شود. پیش‌فرض ۱ است.

GIT_EDITOR

این متغیر محیطی بر $EDITOR و $VISUAL اولویت دارد. توسط چندین دستور گیت زمانی که در حالت تعاملی نیاز به باز کردن یک ویرایشگر باشد استفاده می‌شود. همچنین به git-var(1) و گزینه core.editor در git-config(1) مراجعه کنید.

GIT_SEQUENCE_EDITOR

این متغیر محیطی هنگام ویرایش فهرست todo در یک rebase تعاملی، بر ویرایشگر پیکربندی‌شده گیت اولویت دارد. همچنین به git-rebase(1) و گزینه sequence.editor در git-config(1) مراجعه فرمایید.

GIT_SSH, GIT_SSH_COMMAND

اگر هر یک از این متغیرهای محیطی تنظیم شده باشد، git fetch و git push هنگامی که نیاز به اتصال به یک سامانه راه‌دور داشته باشند، به جای ssh از دستور مشخص‌شده استفاده خواهند کرد. پارامترهای خط فرمان ارسالی به دستور پیکربندی‌شده توسط گونه ssh تعیین می‌شوند. برای جزئیات به گزینه ssh.variant در git-config(1) مراجعه کنید.

$GIT_SSH_COMMAND بر $GIT_SSH اولویت دارد و توسط پوسته تفسیر می‌شود، که این امر امکان گنجاندن آرگومان‌های اضافی را فراهم می‌سازد. $GIT_SSH از سوی دیگر باید صرفاً مسیر یک برنامه باشد (در صورت نیاز به آرگومان‌های اضافی، می‌تواند یک اسکریپت پوشاننده پوسته باشد).

معمولاً پیکربندی گزینه‌های مورد نظر از طریق فایل شخصی .ssh/config آسان‌تر است. لطفاً برای جزئیات بیشتر به مستندات ssh خود مراجعه فرمایید.

GIT_SSH_VARIANT

اگر این متغیر محیطی تنظیم شود، تشخیص خودکار گیت را مبنی بر اینکه آیا GIT_SSH/GIT_SSH_COMMAND/core.sshCommand به OpenSSH ،plink یا tortoiseplink ارجاع دارد بازنویسی می‌کند. این متغیر بر تنظیم پیکربندی ssh.variant که هدف یکسانی دارد اولویت خواهد داشت.

GIT_SSL_NO_VERIFY

تنظیم و صادر کردن این متغیر محیطی با هر مقداری به گیت اعلام می‌کند که هنگام واکشی یا ارسال بر روی HTTPS، گواهی SSL را اعتبارسنجی نکند.

GIT_ATTR_SOURCE

تعیین می‌کند که ویژگی‌های gitattributes از کدام درخت‌واره (treeish) خوانده شوند.

GIT_ASKPASS

اگر این متغیر محیطی تنظیم شود، دستورات گیت که نیاز به دریافت گذرواژه‌ها یا عبارت‌های عبور دارند (مثلاً برای احراز هویت HTTP یا IMAP) این برنامه را با یک اعلان مناسب به عنوان آرگومان خط فرمان فراخوانی کرده و گذرواژه را از خروجی استاندارد (STDOUT) آن دریافت می‌کنند. همچنین گزینه core.askPass را در git-config(1) ببینید.

GIT_TERMINAL_PROMPT

اگر این متغیر محیطی بولی روی false تنظیم شود، گیت در ترمینال هیچ اعلانی نمایش نمی‌دهد (مثلاً هنگام درخواست احراز هویت HTTP).

GIT_CONFIG_GLOBAL, GIT_CONFIG_SYSTEM

پیکربندی را به جای فایل‌های پیکربندی سطح سراسری یا سیستمی، از فایل‌های مشخص‌شده دریافت می‌کند. اگر GIT_CONFIG_SYSTEM تنظیم شود، فایل پیکربندی سیستمی تعریف‌شده در زمان ساخت (معمولاً /etc/gitconfig) خوانده نخواهد شد. به همین ترتیب، اگر GIT_CONFIG_GLOBAL تنظیم شود، نه $HOME/.gitconfig و نه $XDG_CONFIG_HOME/git/config خوانده نخواهند شد. می‌توان آن را روی /dev/null تنظیم کرد تا از خواندن فایل‌های پیکربندی سطح مربوطه صرف‌نظر شود.

GIT_CONFIG_NOSYSTEM

اینکه آیا از خواندن تنظیمات از فایل سراسری سیستم $(prefix)/etc/gitconfig صرف‌نظر شود یا خیر. این متغیر محیطی بولی را می‌توان همراه با $HOME و $XDG_CONFIG_HOME برای ایجاد محیطی قابل پیش‌بینی برای یک اسکریپت حساس استفاده کرد، یا می‌توانید آن را روی true تنظیم کنید تا موقتاً از یک فایل دارای اشکال /etc/gitconfig در حین انتظار برای اصلاح آن توسط فردی با دسترسی کافی دوری گزینید.

GIT_FLUSH

اگر این متغیر محیطی بولی روی true تنظیم شود، دستوراتی نظیر git blame (در حالت افزایشی)، git rev-list، git log، git check-attr و git check-ignore پس از هر رکوردی که ارسال می‌شود، جریان خروجی را مجبور به فلاش (تخلیه فوری بافر) می‌کنند. اگر این متغیر روی false تنظیم شود، خروجی این دستورات با استفاده از ورودی/خروجی کاملاً بافرشده انجام می‌پذیرد. اگر این متغیر تنظیم نشده باشد، گیت بر پایه اینکه آیا stdout به یک فایل هدایت شده است یا خیر، تخلیه بافرشده یا رکورد-محور را انتخاب می‌کند.

GIT_TRACE

پیام‌های ردیابی عمومی را فعال می‌کند؛ مانند بسط نام‌های مستعار، اجرای دستورات توکار و اجرای دستورات خارجی.

اگر این متغیر روی "1"، "2" یا "true" تنظیم شود (مقایسه حساس به بزرگی و کوچکی حروف نیست)، پیام‌های ردیابی در stderr چاپ می‌شوند.

اگر متغیر روی یک مقدار عددی صحیح بزرگتر از ۲ و اکیداً کمتر از ۱۰ تنظیم شود، گیت این مقدار را به عنوان یک توصیف‌گر فایل باز تفسیر کرده و تلاش می‌کند پیام‌های ردیابی را در این توصیف‌گر فایل بنویسد.

یا اینکه اگر متغیر روی یک مسیر مطلق تنظیم شود (که با نویسه / آغاز می‌شود)، گیت آن را به عنوان یک مسیر فایل تفسیر کرده و تلاش می‌کند پیام‌های ردیابی را به انتهای آن اضافه کند.

تنظیم‌نکردن متغیر، یا تنظیم آن روی خالی، "0" یا "false" (بدون حساسیت به بزرگی و کوچکی حروف)، پیام‌های ردیابی را غیرفعال می‌کند.

GIT_TRACE_FSMONITOR

پیام‌های ردیابی را برای افزونه پایشگر سیستم فایل (fsmonitor) فعال می‌کند. برای گزینه‌های خروجی ردیابی موجود، GIT_TRACE را ببینید.

GIT_TRACE_PACK_ACCESS

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

GIT_TRACE_PACKET

پیام‌های ردیابی را برای تمامی بسته‌های ورودی یا خروجی یک برنامه معین فعال می‌کند. این می‌تواند به اشکال‌زدایی مذاکره شیءها یا سایر مسائل پروتکل کمک کند. ردیابی در بسته‌ای که با "PACK" آغاز می‌شود غیرفعال می‌گردد (اما بخش GIT_TRACE_PACKFILE را در زیر ببینید). برای گزینه‌های خروجی ردیابی، GIT_TRACE را ببینید.

GIT_TRACE_PACKFILE

ردیابی فایل‌های بسته ارسالی یا دریافتی توسط یک برنامه معین را فعال می‌کند. بر خلاف سایر خروجی‌های ردیابی، این ردیابی عیناً انجام می‌شود: بدون سرآیند و بدون نقل‌قول داده‌های باینری. به احتمال بسیار قوی مایل خواهید بود خروجی را درون یک فایل هدایت کنید (مثلاً GIT_TRACE_PACKFILE=/tmp/my.pack) به جای اینکه آن را روی ترمینال نمایش دهید یا با سایر خروجی‌های ردیابی ترکیب کنید.

توجه داشته باشید که این ویژگی در حال حاضر فقط برای سمت کلاینت کلون‌ها و واکشی‌ها پیاده‌سازی شده است.

GIT_TRACE_PERFORMANCE

پیام‌های ردیابی مرتبط با کارایی را فعال می‌کند؛ مانند زمان کل اجرای هر دستور گیت. برای گزینه‌های خروجی ردیابی، GIT_TRACE را ببینید.

GIT_TRACE_REFS

پیام‌های ردیابی را برای عملیات روی پایگاه داده ارجاعات فعال می‌کند. برای گزینه‌های خروجی ردیابی، GIT_TRACE را ببینید.

GIT_TRACE_SETUP

پیام‌های ردیابی را فعال می‌کند که دایرکتوری git.، درخت کاری و دایرکتوری کاری فعلی را پس از تکمیل مرحله راه‌اندازی گیت چاپ می‌کنند. برای گزینه‌های خروجی ردیابی، GIT_TRACE را ببینید.

GIT_TRACE_SHALLOW

پیام‌های ردیابی را فعال می‌کند که می‌توانند به اشکال‌زدایی واکشی / کلون کردن مخازن کم‌عمق کمک کنند. برای گزینه‌های خروجی ردیابی، GIT_TRACE را ببینید.

GIT_TRACE_CURL

تخلیه ردیابی کامل curl از تمامی داده‌های ورودی و خروجی، شامل اطلاعات توصیفی پروتکل انتقال گیت را فعال می‌کند. این شبیه به اجرای دستور curl همراه با --trace-ascii در خط فرمان است. برای گزینه‌های خروجی ردیابی، GIT_TRACE را ببینید.

GIT_TRACE_CURL_NO_DATA

هنگامی که ردیابی curl فعال است (به GIT_TRACE_CURL در بالا نگاه کنید)، داده‌ها را تخلیه نمی‌کند (یعنی فقط خطوط اطلاعات و سرآیندها تخلیه می‌شوند).

GIT_TRACE2

پیام‌های ردیابی دقیق‌تری را از کتابخانه "trace2" فعال می‌کند. خروجی حاصل از GIT_TRACE2 یک قالب متنی ساده برای خوانایی توسط انسان است.

اگر این متغیر روی "1"، "2" یا "true" تنظیم شود (مقایسه حساس به بزرگی و کوچکی حروف نیست)، پیام‌های ردیابی در stderr چاپ می‌شوند.

اگر متغیر روی یک مقدار عددی صحیح بزرگتر از ۲ و اکیداً کمتر از ۱۰ تنظیم شود، گیت این مقدار را به عنوان یک توصیف‌گر فایل باز تفسیر کرده و سعی می‌کند پیام‌های ردیابی را در این توصیف‌گر فایل بنویسد.

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

علاوه بر این، اگر متغیر روی af_unix:[<socket-type>:]<absolute-pathname> تنظیم شود، گیت تلاش می‌کند مسیر را به عنوان یک سوکت دامنه یونیکس باز کند. نوع سوکت می‌تواند stream یا dgram باشد.

تنظیم‌نکردن متغیر، یا تنظیم آن روی خالی، "0" یا "false" (بدون حساسیت به بزرگی و کوچکی حروف)، پیام‌های ردیابی را غیرفعال می‌کند.

برای جزئیات کامل، Trace2 documentation[2] را ببینید.

GIT_TRACE2_EVENT

این تنظیم قالبی مبتنی بر JSON می‌نویسد که برای تفسیر توسط ماشین مناسب است. برای گزینه‌های خروجی ردیابی به GIT_TRACE2 و برای جزئیات کامل به Trace2 documentation[2] مراجعه فرمایید.

GIT_TRACE2_PERF

علاوه بر پیام‌های متنی موجود در GIT_TRACE2، این تنظیم قالبی ستون‌محور برای درک نواحی تو در تو می‌نویسد. برای گزینه‌های خروجی ردیابی به GIT_TRACE2 و برای جزئیات کامل به Trace2 documentation[2] مراجعه کنید.

GIT_TRACE_REDACT

به صورت پیش‌فرض، هنگامی که ردیابی فعال است، گیت مقادیر کوکی‌ها، سرآیند "Authorization:"، سرآیند "Proxy-Authorization:" و نشانی‌های بسته را پنهان‌سازی (redact) می‌کند. این متغیر محیطی بولی را روی false تنظیم کنید تا از این پنهان‌سازی جلوگیری شود.

GIT_NO_REPLACE_OBJECTS

تنظیم و صادر کردن این متغیر محیطی به گیت می‌گوید که ارجاعات جایگزین را نادیده بگیرد و شیءهای گیت را جایگزین نکند.

GIT_LITERAL_PATHSPECS

تنظیم این متغیر محیطی بولی روی true باعث می‌شود گیت با همه الگوهای مسیر به صورت تحت‌اللفظی رفتار کند، نه به عنوان الگوهای تطبیق (glob). برای مثال، اجرای GIT_LITERAL_PATHSPECS=1 git log -- '*.c' به دنبال کامیت‌هایی می‌گردد که مسیر *.c را لمس کرده‌اند، نه هر مسیری که الگوی تطبیق *.c با آن مطابقت دارد. اگر در حال تحویل دادن مسیرهای تحت‌اللفظی به گیت هستید (مانند مسیرهایی که قبلاً توسط git ls-tree، خروجی diff --raw و غیره ارائه شده است)، ممکن است به این گزینه نیاز داشته باشید.

GIT_GLOB_PATHSPECS

تنظیم این متغیر محیطی بولی روی true باعث می‌شود گیت با همه الگوهای مسیر مانند الگوهای تطبیق رفتار کند (معروف به جادوی "glob").

GIT_NOGLOB_PATHSPECS

تنظیم این متغیر محیطی بولی روی true باعث می‌شود گیت با همه الگوهای مسیر به صورت تحت‌اللفظی رفتار کند (معروف به جادوی "literal").

GIT_ICASE_PATHSPECS

تنظیم این متغیر محیطی بولی روی true باعث می‌شود گیت با تمام الگوهای مسیر بدون حساسیت به بزرگی و کوچکی حروف رفتار کند.

GIT_NO_LAZY_FETCH

تنظیم این متغیر محیطی بولی روی true به گیت اعلام می‌کند که شیءهای مفقود را بر حسب تقاضا از ریموت متعهد واکشی نکند.

GIT_REFLOG_ACTION

هنگامی که یک ارجاع به‌روزرسانی می‌شود، ورودی‌های reflog ایجاد می‌شوند تا علاوه بر مقادیر قدیم و جدید ارجاع، علت به‌روزرسانی آن را نیز پیگیری کنند (که معمولاً نام دستور سطح بالایی است که ارجاع را به‌روزرسانی کرده است). یک دستور پورسلین اسکریپت‌شده می‌تواند از تابع کمکی set_reflog_action در git-sh-setup استفاده کند تا هنگام فراخوانی به عنوان دستور بالاترین سطح توسط کاربر نهایی، نام خود را روی این متغیر تنظیم کند تا در بدنه reflog ثبت شود.

GIT_REF_PARANOIA

اگر این متغیر محیطی بولی روی false تنظیم شود، هنگام پیمایش فهرست‌های ارجاعات، ارجاعات خراب یا با نام‌گذاری نامناسب را نادیده می‌گیرد. به طور معمول گیت تلاش می‌کند هر گونه ارجاع این‌چنینی را لحاظ کند که ممکن است باعث شکست برخی عملیات شود. معمولاً این رفتار ترجیح داده می‌شود، زیرا عملیات بالقوه مخرب (مانند git-prune(1)) بهتر است متوقف شوند تا اینکه ارجاعات خراب را نادیده بگیرند (و در نتیجه تاریخچه‌ای را که به آن اشاره دارند فاقد ارزش نگهداری تلقی کنند). مقدار پیش‌فرض 1 است (یعنی حساسیت کامل درباره شناسایی و لغو تمامی عملیات). معمولاً نیازی به تنظیم این مقدار روی 0 ندارید، اما ممکن است هنگام تلاش برای نجات داده‌ها از یک مخزن آسیب‌دیده کاربرد داشته باشد.

GIT_COMMIT_GRAPH_PARANOIA

هنگام بارگیری یک شیء کامیت از commit-graph، گیت بررسی می‌کند که آیا شیء در پایگاه داده شیءها وجود دارد یا خیر. این کار برای جلوگیری از بروز مشکلات ناشی از commit-graphهای منقضی که حاوی ارجاع به کامیت‌های از پیش حذف‌شده هستند انجام می‌شود، اما با افت کارایی همراه است.

پیش‌فرض "false" است که رفتار یادشده را غیرفعال می‌کند. تنظیم این گزینه روی "true" بررسی وجود شیء را فعال می‌کند تا کامیت‌های منقضی هرگز از commit-graph بازگردانده نشوند، به بهای کاهش کارایی.

GIT_ALLOW_PROTOCOL

اگر روی فهرستی از پروتکل‌ها تنظیم شود که با دونقطه از هم جدا شده‌اند، طوری عمل می‌کند که گویی protocol.allow روی never تنظیم شده و هر یک از پروتکل‌های فهرست‌شده دارای مقدار always برای protocol.<name>.allow هستند (که هر گونه پیکربندی موجود را بازنویسی می‌کند). برای جزئیات بیشتر به توضیحات protocol.allow در git-config(1) مراجعه فرمایید.

GIT_PROTOCOL_FROM_USER

این متغیر محیطی بولی را روی false تنظیم کنید تا از پروتکل‌های مورد استفاده توسط fetch/push/clone که روی وضعیت user پیکربندی شده‌اند جلوگیری شود. این برای محدود کردن مقداردهی اولیه بازگشتی زیرپیمانه‌ها از یک مخزن غیرقابل اعتماد یا برای برنامه‌هایی که نشانی‌های اینترنتی بالقوه غیرقابل اعتماد را به دستورات گیت تغذیه می‌کنند مفید است. برای جزئیات به git-config(1) مراجعه فرمایید.

GIT_PROTOCOL

صرفاً برای استفاده داخلی. در دست‌تکانی پروتکل تحت شبکه به کار می‌رود. شامل یک فهرست جداشده با دونقطه : از کلیدها با مقادیر اختیاری <key>[=<value>] است. وجود کلیدها و مقادیر ناشناخته باید نادیده گرفته شود.

توجه داشته باشید که ممکن است لازم باشد سرورها طوری پیکربندی شوند که اجازه عبور این متغیر را از برخی روش‌های انتقال بدهند. این متغیر هنگام دسترسی به مخازن محلی (یعنی file:// یا مسیر سیستم فایل) و همچنین بر روی پروتکل git:// به طور خودکار انتشار می‌یابد. برای git-over-http در بیشتر پیکربندی‌ها باید به طور خودکار کار کند، اما به بحث موجود در git-http-backend(1) مراجعه فرمایید. برای git-over-ssh، ممکن است لازم باشد سرور ssh طوری پیکربندی شود که به کلاینت‌ها اجازه ارسال این متغیر را بدهد (مثلاً با استفاده از AcceptEnv GIT_PROTOCOL در OpenSSH).

این پیکربندی اختیاری است. اگر متغیر منتشر نشود، کلاینت‌ها به پروتکل اصلی "v0" تنزل می‌یابند (اما ممکن است برخی از بهبودهای کارایی یا ویژگی‌ها را از دست بدهند). این متغیر در حال حاضر فقط بر کلون‌ها و واکشی‌ها تأثیر می‌گذارد؛ هنوز برای ارسال‌ها (push) استفاده نمی‌شود (اما ممکن است در آینده به کار رود).

GIT_OPTIONAL_LOCKS

اگر این متغیر محیطی بولی روی false تنظیم شود، گیت هر عملیات درخواستی را بدون انجام هیچ‌یک از عملیات فرعی اختیاری نیازمند قفل کامل می‌کند. برای مثال، این کار مانع از آن می‌شود که git status به عنوان یک اثر جانبی ایندکس را تازه‌سازی کند. این مورد برای فرایندهایی که در پس‌زمینه اجرا می‌شوند و تمایلی به ایجاد تداخل قفل با سایر عملیات روی مخزن ندارند کاربرد دارد. پیش‌فرض 1 است.

GIT_REDIRECT_STDIN, GIT_REDIRECT_STDOUT, GIT_REDIRECT_STDERR

فقط ویندوز: امکان هدایت دستگیره‌های ورودی/خروجی/خطای استاندارد را به مسیرهای تعیین‌شده توسط متغیرهای محیطی فراهم می‌سازد. این ویژگی به ویژه در برنامه‌های چندنخی کاربرد دارد که در آن‌ها روش استاندارد ارسال دستگیره‌ها از طریق CreateProcess() به دلیل نیاز به علامت‌گذاری دستگیره‌ها به عنوان قابل توارث مقدور نیست (و در نتیجه هر فرایند ایجادشده آن‌ها را به ارث می‌برد و احتمالاً عملیات عادی گیت را مسدود می‌کند). مورد استفاده اولیه مورد نظر، استفاده از لوله‌های نام‌گذاری‌شده برای ارتباط است (مانند \\.\pipe\my-git-stdin-123).

دو مقدار ویژه پشتیبانی می‌شوند: off صرفاً دستگیره استاندارد مربوطه را می‌بندد، و اگر GIT_REDIRECT_STDERR برابر با 2>&1 باشد، خطای استاندارد به همان دستگیره خروجی استاندارد هدایت می‌شود.

GIT_PRINT_SHA1_ELLIPSIS (منسوخ‌شده)

در صورت تنظیم روی yes، یک علامت سه‌نقطه به دنبال مقدار (مختصر) SHA-1 چاپ می‌کند. این بر اعلان‌های HEADهای جداشده (detached) در ( git-checkout(1)) و خروجی خام diff در ( git-diff(1)) تأثیر می‌گذارد. چاپ سه‌نقطه در موارد یادشده دیگر مناسب تلقی نمی‌شود و پشتیبانی از آن در آینده نزدیک (همراه با خود متغیر) احتمالاً حذف خواهد شد.

GIT_ADVICE

اگر روی 0 تنظیم شود، همه پیام‌های راهنمایی و توصیه را غیرفعال می‌کند. هدف این پیام‌ها ارائه نکاتی به کاربران انسانی است که ممکن است به آن‌ها در خروج از وضعیت‌های مشکل‌ساز یا بهره‌گیری از ویژگی‌های جدید کمک کند. کاربران می‌توانند پیام‌های منفرد را با استفاده از کلیدهای پیکربندی advice.* غیرفعال کنند. این پیام‌ها ممکن است برای ابزارهایی که فرایندهای گیت را اجرا می‌کنند مزاحمت ایجاد کنند، بنابراین این متغیر برای غیرفعال کردن پیام‌ها در نظر گرفته شده است. (گزینه سراسری --no-advice نیز در دسترس است، اما نسخه‌های قدیمی گیت ممکن است در صورت عدم درک این گزینه با خطا مواجه شوند. این متغیر محیطی توسط نسخه‌هایی از گیت که آن را درک نمی‌کنند نادیده گرفته خواهد شد.)

جزئیات بیشتر پیرامون موارد زیر در Git concepts chapter of the user-manual[3] و gitcore-tutorial(7) در دسترس است.

یک پروژه گیت معمولاً شامل یک دایرکتوری کاری با یک زیردایرکتوری ".git" در بالاترین سطح است. دایرکتوری git.، در میان موارد دیگر، شامل یک پایگاه داده فشرده شیء است که تاریخچه کامل پروژه را نمایش می‌دهد، یک فایل "index" که آن تاریخچه را به محتوای فعلی درخت کاری متصل می‌کند، و اشاره‌گرهای نام‌گذاری‌شده به درون آن تاریخچه مانند تگ‌ها و نوک شاخه‌ها.

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

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

تمامی شیءها با هش SHA-1 محتوای خود نام‌گذاری می‌شوند که معمولاً به صورت رشته‌ای از ۴۰ رقم هگزادسیمال نوشته می‌شود. چنین نام‌هایی در سطح جهانی یکتا هستند. کل تاریخچه‌ای که به یک کامیت منتهی می‌شود را می‌توان صرفاً با امضای همان کامیت تضمین کرد. نوع چهارمی از شیء به نام تگ (tag) برای همین منظور در نظر گرفته شده است.

هنگام ایجاد اولیه، شیءها در فایل‌های جداگانه ذخیره می‌شوند، اما برای کارایی بیشتر ممکن است بعداً در قالب "فایل‌های بسته" (pack files) به صورت فشرده با یکدیگر تجمیع شوند.

اشاره‌گرهای نام‌گذاری‌شده با نام ارجاعات (refs)، نقاط مهم در تاریخچه را علامت‌گذاری می‌کنند. یک ارجاع ممکن است شامل نام SHA-1 یک شیء یا نام یک ارجاع دیگر باشد (مورد دوم "ارجاع نمادین" نامیده می‌شود). ارجاعاتی با نام‌هایی که با refs/head/ آغاز می‌شوند حاوی نام SHA-1 تازه‌ترین کامیت (یا "head") یک شاخه در حال توسعه هستند. نام‌های SHA-1 تگ‌های مورد نظر در زیر refs/tags/ ذخیره می‌شوند. یک ارجاع نمادین به نام HEAD حاوی نام شاخه‌ای است که هم‌اکنون بررسی (checkout) شده است.

فایل ایندکس با فهرستی از همه مسیرها و برای هر مسیر، یک شیء blob و مجموعه‌ای از ویژگی‌ها مقداردهی اولیه می‌شود. شیء blob نشان‌دهنده محتوای فایل در وضعیت نوک شاخه فعلی است. ویژگی‌ها (زمان آخرین تغییر، اندازه و غیره) از فایل متناظر در درخت کاری گرفته می‌شوند. تغییرات بعدی در درخت کاری را می‌توان با مقایسه این ویژگی‌ها پیدا کرد. ایندکس می‌تواند با محتوای جدید به‌روزرسانی شود و کامیت‌های جدید می‌توانند از محتوای ذخیره‌شده در ایندکس ایجاد شوند.

ایندکس همچنین قادر است چندین ورودی (موسوم به "stages") را برای یک مسیر مشخص نگهداری کند. این مراحل برای نگهداری نسخه‌های مختلف ادغام‌نشده یک فایل در زمانی که ادغام در حال انجام است استفاده می‌شوند.

برخی گزینه‌های پیکربندی و فایل‌های هوک ممکن است باعث شوند گیت دستورات دلخواه پوسته را اجرا کند. از آنجا که پیکربندی و هوک‌ها با استفاده از git clone کپی نمی‌شوند، کلون کردن مخازن راه‌دور با محتوای غیرقابل اعتماد، بازرسی آن‌ها با git log و مواردی از این دست عموماً ایمن است.

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

به طور پیش‌فرض، گیت در صورتی که مالک مخزن فردی غیر از کاربر اجراکننده دستور باشد از اجرا خودداری می‌کند. مدخل مربوط به safe.directory را در git-config(1) ببینید. اگرچه این امر می‌تواند به محافظت از شما در یک محیط چندکاربره کمک کند، توجه داشته باشید که ممکن است مخازن غیرقابل اعتمادی را نیز در اختیار داشته باشید که متعلق به خود شما هستند (مثلاً اگر یک فایل zip یا tarball را از یک منبع نامطمئن استخراج کنید). در چنین مواردی، باید ابتدا مخزن غیرقابل اعتماد را "پاک‌سازی" (sanitize) کنید.

اگر دایرکتوری .git غیرقابل اعتمادی دارید، باید ابتدا آن را با git clone --no-local کلون کنید تا نسخه‌ای تمیز به دست آورید. گیت مجموعه گزینه‌ها و هوک‌هایی را که توسط upload-pack (که سمت سرور یک کلون یا واکشی را مدیریت می‌کند) اجرا می‌شوند محدود می‌کند، اما آگاه باشید که سطح حمله علیه upload-pack وسیع است، بنابراین این کار خطراتی به همراه دارد. امن‌ترین روش این است که مخزن را به عنوان یک کاربر بدون امتیاز سرویس‌دهی کنید (خواه از طریق git-daemon(1)، ssh، یا با استفاده از سایر ابزارها برای تغییر شناسه‌های کاربری). به بحث موجود در بخش SECURITY در git-upload-pack(1) مراجعه فرمایید.

برای شروع کار با گیت به مراجع موجود در بخش "توضیحات" مراجعه کنید. موارد زیر احتمالاً حاوی جزئیاتی فراتر از نیاز یک کاربر تازه‌کار است.

فصل Git concepts chapter of the user-manual[3] و همچنین gitcore-tutorial(7) هر دو مقدمه‌ای بر معماری بنیادین گیت ارائه می‌دهند.

برای مروری بر جریان‌های کاری توصیه‌شده، gitworkflows(7) را ببینید.

همچنین اسناد howto[4] را برای چند مثال کاربردی ببینید.

سازوکارهای داخلی در Git API documentation[5] مستندسازی شده‌اند.

کاربرانی که از CVS مهاجرت می‌کنند نیز ممکن است مایل به خواندن gitcvs-migration(7) باشند.

گیت توسط لینوس توروالدز (Linus Torvalds) آغاز شد و هم‌اکنون توسط جونیو سی هامانو (Junio C Hamano) نگهداری می‌شود. مشارکت‌های بی‌شماری از لیست پستی گیت <git@vger.kernel.org[6]> انجام شده است. نشانی https://openhub.net/p/git/contributors/summary فهرست کامل‌تری از مشارکت‌کنندگان را به شما ارائه می‌دهد.

اگر یک نسخه کلون‌شده از خود git.git دارید، خروجی دستورات git-shortlog(1) و git-blame(1) می‌تواند نویسندگان بخش‌های خاصی از پروژه را نشان دهد.

اشکالات را به لیست پستی گیت <git@vger.kernel.org[6]> که توسعه و نگهداری عمدتاً در آنجا صورت می‌گیرد گزارش دهید. برای ارسال پیام نیازی به عضویت در این لیست ندارید. برای مشاهده گزارش‌های اشکال قبلی و سایر بحث‌ها، آرشیو لیست را در https://lore.kernel.org/git ببینید.

مسائلی که دارای اهمیت امنیتی هستند باید به صورت محرمانه به لیست پستی امنیت گیت <git-security@googlegroups.com[7]> ارسال شوند.

gittutorial(7), gittutorial-2(7), giteveryday(7), gitcvs-migration(7), gitglossary(7), gitcore-tutorial(7), gitcli(7), The Git User’s Manual[1], gitworkflows(7)

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

1.
Git User’s Manual
file:///usr/share/doc/git-doc/user-manual.html
2.
Trace2 documentation
file:///usr/share/doc/git-doc/technical/api-trace2.html
3.
Git concepts chapter of the user-manual
file:///usr/share/doc/git-doc/user-manual.html#git-concepts
4.
howto
file:///usr/share/doc/git-doc/howto-index.html
5.
Git API documentation
file:///usr/share/doc/git-doc/technical/api-index.html
6.
git@vger.kernel.org
mailto:git@vger.kernel.org
7.
git-security@googlegroups.com
mailto:git-security@googlegroups.com
2026-06-29 Git 2.55.0