GITMAILMAP(5) Git Manual GITMAILMAP(5)

gitmailmap - نگاشت نام‌ها و نشانی‌های ایمیل نویسنده/ثبت‌کننده در گیت

$GIT_WORK_TREE/.mailmap

اگر فایل .mailmap در بالاترین سطح دایرکتوری مخزن یا در مکانی که گزینه‌های پیکربندی mailmap.file یا mailmap.blob به آن اشاره می‌کنند وجود داشته باشد (نگاه کنید به git-config(1))، برای نگاشت نام‌ها و نشانی‌های ایمیل پدیدآورنده و ثبت‌کننده به نام‌های واقعی و نشانی‌های ایمیل استاندارد استفاده می‌شود.

نویسه # آغازگر یک توضیح (کامنت) تا پایان سطر است؛ سطرهای خالی نادیده گرفته می‌شوند.

در حالت ساده، هر سطر در این فایل شامل نام واقعی و معیار یک نویسنده، فاصله خالی، و نشانی ایمیل استفاده‌شده در کامیت (محصور در < و >) است تا به آن نام نگاشت شود. برای نمونه:

Proper Name <commit@email.xx>

شکل‌های پیچیده‌تر عبارتند از:

<proper@email.xx> <commit@email.xx>

که به mailmap امکان می‌دهد فقط بخش ایمیل یک کامیت را جایگزین کند، و:

Proper Name <proper@email.xx> <commit@email.xx>

که به mailmap اجازه می‌دهد هم نام و هم ایمیل یک کامیت را که با نشانی ایمیل کامیت مشخص‌شده مطابقت دارد جایگزین کند، و:

Proper Name <proper@email.xx> Commit Name <commit@email.xx>

که به mailmap اجازه می‌دهد هم نام و هم ایمیل یک کامیت را که با هر دو مقدار مشخص‌شده یعنی نام کامیت و نشانی ایمیل مطابقت دارد جایگزین کند.

تطبیق ایمیل‌ها و نام‌ها بدون حساسیت به حروف بزرگ و کوچک (case-insensitively) انجام می‌شود. برای مثال این الگو نیز با Commit Name <commit@email.xx> بالا مطابقت خواهد داشت:

Proper Name <proper@email.xx> CoMmIt NaMe <CoMmIt@EmAiL.xX>

گیت هنگام دسترسی به فایل .mailmap در درخت کاری، پیوندهای نمادین را دنبال نمی‌کند. این امر رفتار سیستم را هنگام دسترسی به فایل از ایندکس یا درخت در مقایسه با فایل‌سیستم یکدست نگه می‌دارد.

تاریخچه پروژه شما شامل کامیت‌هایی از دو نویسنده، Jane و Joe، است که نام‌هایشان با اشکال مختلفی در مخزن ظاهر شده است:

Joe Developer <joe@example.com>
Joe R. Developer <joe@example.com>
Jane Doe <jane@example.com>
Jane Doe <jane@laptop.(none)>
Jane D. <jane@desktop.(none)>

اکنون فرض کنید که Joe می‌خواهد از حرف اول نام میانی‌اش استفاده شود، و Jane ترجیح می‌دهد نام خانوادگی‌اش به طور کامل درج گردد. یک فایل .mailmap برای تصحیح نام‌ها به این صورت خواهد بود:

Joe R. Developer <joe@example.com>
Jane Doe <jane@example.com>
Jane Doe <jane@desktop.(none)>

توجه داشته باشید که برای تصحیح صرف نام‌ها نیازی به نگاشت نام برای <jane@laptop.(none)> نیست. با این حال، رها کردن ایمیل‌های آشکارا ناقص <jane@laptop.(none)> و <jane@desktop.(none)> به همان شکل معمولاً مطلوب نیست. فایل .mailmap که آن‌ها را نیز اصلاح می‌کند به این صورت است:

Joe R. Developer <joe@example.com>
Jane Doe <jane@example.com> <jane@laptop.(none)>
Jane Doe <jane@example.com> <jane@desktop.(none)>

در نهایت، فرض کنید که Joe و Jane دارای یک نشانی ایمیل مشترک بودند اما نام یکسانی نداشتند، به عنوان مثال این دو کامیت در تاریخچه توسط یک سامانه گزارش باگ ایجاد شده باشند؛ یعنی نام‌ها در تاریخچه به صورت زیر ثبت شده باشند:

Joe <bugs@example.com>
Jane <bugs@example.com>

یک فایل کامل .mailmap که این موارد را نیز مدیریت کند (افزودن دو سطر به مثال بالا) چنین خواهد بود:

Joe R. Developer <joe@example.com>
Jane Doe <jane@example.com> <jane@laptop.(none)>
Jane Doe <jane@example.com> <jane@desktop.(none)>
Joe R. Developer <joe@example.com> Joe <bugs@example.com>
Jane Doe <jane@example.com> Jane <bugs@example.com>

git-check-mailmap(1)

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

2026-06-29 Git 2.55.0