سرفصل‌های آموزشی
آموزش کاربردی گیت برای برنامه نویسان
git config چیست؟

git config چیست؟

Git Config

در این مستند، نگاهی عمیق به دستور git config خواهیم انداخت. ما به طور خلاصه در مورد git config در صفحه ی تنظیم یک مخزن بحث کردیم. دستور git config یک عمل راحت است که برای تنظیم مقدارهای پیکربندی Git در سطح پروژه ی عمومی یا محلی استفاده می شود. این سطح از پیکربندی، با فایل های متنی .git config مطابقت دارد. اجرای دستور  git config، یک فایل متنی پیکربندی را تغییر می دهد. ما تنظیم های پیکربندی مشترکی مانند ایمیل، نام کاربری و ویرایش گر را پوشش خواهیم داد. همچنین در مورد نام های مستعار Git بحث خواهیم کرد، که به شما این امکان را می دهد که میانبرهایی برای کارهای Git که اغلب استفاده می شود، ایجاد کنید. آشنایی با git config و تنظیم های مختلف پیکربندی Git به شما کمک می کند تا یک گردش کار قدرتمند و سفارشی ایجاد کنید.

کاربرد 

ابتدایی ترین کاربرد برای git config فراخوانی آن با نام پیکربندی است که مقدار تعیین شده را با آن نام نمایش می دهد. نام های پیکربندی رشته های محدود شده با نقطه هستند که براساس سلسله مراتب خود از "section" و "key" تشکیل شده اند. به عنوان مثال:  user.email

git config user.email

در این مثال، ایمیل یکی از خصوصیت های فرزند بخش پیکربندی کاربر است. با این کار آدرس ایمیل پیکربندی شده بر می کردد، در صورت وجود، Git  با commit های ایجاد شده ی محلی مرتبط می شود. 

سطح ها و فایل های git config

قبل از اینکه بیشتر در مورد استفاده از git config بحث کنیم، بیایید لحظه ای به سطح های پیکربندی بپردازیم. دستور  git config می تواند پارامتر هایی را برای تعیین سطح پیکربندی، بپذیرد. این سطح ها شامل مواردزیر هستند: 

--local

Git config به طور پیش فرض، در صورتی که سطح پیکر بندی را مشخص نکنید،آن را در سطح محلی پیکر بندی می کند. پیکربندی سطح محلی بر روی مخزن زمینه استفاده می شود و git config  در آن فراخوانی می شود. مقدارهای پیکربندی محلی در فایلی ذخیره می شود که می توان آن را در مسیر .git موجود در مخزن پیدا کرد: .git/config

--global

پیکربندی سطح عمومی، خاص کاربر است، به این معنی که برای کاربر سیستم عامل اعمال می شود. مقدارهای پیکربندی عمومی در فایلی ذخیره می شود که در مسیر اصلی کاربر قرار دارد. ~ /.gitconfig در سیستم های یونیکس و C: \ Users \\. gitconfig  در ویندوز

--system

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

در سیستم های یونیکس: 

  (prefix)/etc/gitconfig$

همچنین در ویندوز ها این فایل را می توان  به صورت زیر پیدا کرد:

در ویندوز XP: 

 C: \ Documents and Settings \ All Users \ Application Data \ Git \ config

و در ویندوز ویستا و جدیدتر: 

            C: \ ProgramData \ Git \ config

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

نوشتن یک مقدار

با پیشرفت دانشمان در مورد git config، بیایید به مثالی نگاه کنیم: 

git config --global user.email "your_email@example.com"

 این مثال مقدار your_email@example.com  را با نام پیکربندی user.email می نویسد. از پرچم --global استفاده می کند، بنابراین این مقدار برای کاربر فعلی سیستم عامل تنظیم می شود. 

git config editor - core.editor

بسیاری از دستورهای Git، یک ویرایش گر متن را برای درخواست ورودی بیشتر راه اندازی می کنند. یکی از رایج ترین موارد استفاده برای git config، پیکربندی ویرایش گر Git است. در زیر لیستی از ویرایش گرهای محبوب و مطابق با دستورهای git config ذکر شده است: 

ویرایش گر

دستور config

Atom

~ git config --global core.editor "atom --wait"~

emacs

~ git config --global core.editor "emacs"~

nano

~ git config --global core.editor "nano -w"~

vim

~ git config --global core.editor "vim"~

Sublime Text (Mac)

~ git config --global core.editor "subl -n -w"~

Sublime Text (Win, 32-bit install)

~ git config --global core.editor "'c:/program files (x86)/sublime text 3/sublimetext.exe' -w"~

Sublime Text (Win, 64-bit install)

~ git config --global core.editor "'c:/program files/sublime text 3/sublimetext.exe' -w"~

Textmate

~ git config --global core.editor "mate -w"~

ابزارهای Merge

در رویداد merge conflict، Git  یک "ابزار merge" را راه اندازی می کند. به طور پیش فرض، Git  از پیاده سازی داخلی برنامه ی متفاوت Unix رایج استفاده می کند. تفاوت داخلی git، یک نمایش گر merge conflict کوچک است. بسیاری از merge conflict های third party خارجی وجود دارد که می تواند به جای آن استفاده شود. برای مروری بر ابزارها و پیکربندی های مختلف merge، به راهنمای ما در مورد نکته ها و ابزارهای حل conflict ها با Git مراجعه کنید.

git config --global merge.tool kdiff3

خروجی های رنگی

Git، از خروجی ترمینال رنگی پشتیبانی می کند که به سرعت خواندن خروجی Git، کمک می کند. می توانید خروجی Git خود را برای استفاده از قالب رنگی، شخصی سازی کنید. از دستور git config برای تنظیم این مقدارهای رنگ استفاده می شود. 

color.ui

این متغیر اصلی برای رنگ های Git است. تنظیم آن رویfalse ، همه ی خروجی ترمینال رنگی Git را غیرفعال می کند. 

$ git config --global color.ui false

به طور پیش فرض، color.ui  روی خودکار تنظیم شده است که رنگ ها را برای جریان فوری خروجی ترمینال اعمال می کند. اگر جریان خروجی به فایل یا pipe دیگری هدایت شود، تنظیم خودکار، خروجی کد رنگ را حذف خواهد کرد. 

می توانید مقدار color.ui را همیشه تنظیم کنید که در هنگام هدایت جریان خروجی به فایل ها یا pipe ها، از خروجی کد رنگ نیز استفاده شود. این می تواند ناخواسته مشکلاتی را ایجاد کند زیرا ممکن است pipe گیرنده، انتظار ورودی کدگذاری شده با رنگ را نداشته باشد. 

مقدار های رنگ Git

علاوه بر color.ui ، بسیاری از تنظیم های رنگ دانه ای دیگر نیز وجود دارد. مانندcolor.ui ، همه ی این تنظیم های رنگ را می توان روی false، auto یا always تنظیم کرد. این تنظیم های رنگ همچنین می تواند مجموعه ای از یک مقدار رنگ خاص باشد. چند نمونه از مقدار های رنگی پشتیبانی شده عبارت اند از: 

  • normal
  • black
  • red
  • green
  • yellow
  • blue
  • magenta
  • cyan
  • white

اگر ترمینال شما از آن پشتیبانی می کند، ممکن است رنگ ها به عنوان کدهای رنگ هگزا دسیمال مانند  ff0000# یا مقدارهای رنگی ANSI 256 مشخص شوند. 

تنظیم های پیکربندی رنگ  Git

  1. color.branch 
    • رنگ خروجی دستور git branch  را پیکربندی می کند. 
  2. <olor.branch. <slot 
    • این مقدار برای خروجی git branch  نیز قابل استفاده است. <slot> یکی از موارد زیر است: 
      1.  current: شاخه ی فعلی
      2. local: یک شاخه ی محلی 
      3. remote: یک شاخه ی از راه دور در  refs / Remote
      4. upstream: یک شاخه ی ردیابی بالادست 
      5. plain: هر مرجع دیگر 
  3. color.diff 
    • رنگ ها را برای خروجیgit diff ، git log  و git show اعمال می کند. 
  4. <color.diff. <slot 
    • پیکربندی مقدار <slot>  در color.diff  به git می گوید که از کدام قسمت از patch، برای استفاده از رنگ خاص، استفاده کند. 
  5. context: تفاوت زمینه متن. خط هایی از زمینه متن است که در یک تغییر یا patch، نشان داده شده و تغییرها را برجسته می کند. 
  6. plain: مترادف با context 
  7. meta: رنگ را برای اطلاعات meta از diff اعمال می کند.
  8. frag: رنگ را به "سربرگ hunk" یا "تابع در سربرگ hunk" اعمال می کند. 
  9. old: رنگی را به خط های حذف شده در diff اعمال می کند. 
  10. new: خط های اضافه شده در diff را رنگ می کند. 
  11. commit: سربرگ های commit در diff را رنگ می کند.
  12. whitespace: برای هر خطاهای فضای خالی در یک diff، یک رنگ تعیین می کند. 
  13. <color.decorate. <slot 
    • رنگ را برای خروجی git log --decorate شخصی سازی می کند. مقدار های پشتیبانی شده برای <slot>  عبارتند از: branch، remote branch، tag ، stash یا HEAD. آن ها به ترتیب برای شاخه های محلی، شاخه های ردیابی از راه دور، برچسب ها، تغییرهای stash و HEAD قابل استفاده هستند. 
  14. color.grep 
    • رنگ را به خروجی git grep اعمال می کند. 
  15. color.grep. <slot> 
    • متغیر<slot>  مشخص می کند که کدام قسمت از خروجی grep برای اعمال رنگ استفاده شود. 
      1. context: متن غیر همسان در خط های زمینه 
      2. filename: پیشوند نام فایل
      3. function: خط های نام تابع  
      4. linenumber: پیشوند شماره خط
      5. match: متن مطابق
      6. matchContext: متن مطابق در خط های محتوا 
      7. matchSelected: متن متناسب در خط های انتخاب شده
      8. selected: متن غیر همسان در خط های انتخاب شده 
      9. separator: جداکننده ها بین فیلد های روی یک خط (: ، - ، و =) و بین پوسته ها  (-) 
  16. color.interactive 
    • این متغیر، رنگ را برای درخواست ها و نمایش های تعاملی اعمال می کند. به عنوان مثال git add --interactive و git clean --interactive  
  17. color.interactive. <slot> 
    • متغیر <slot>  را می توان برای هدف قرار دادن "interactive output" خاص تر مشخص کرد. مقدار های <slot>  عبارتند از: prompt، header، help، error؛ و هر کدام بر روی interactive output مربوط به خود عمل می کنند. 
  18. color.pager 
    • هنگام استفاده از pager، خروجی رنگی را فعال یا غیرفعال می کند. 
  19. color.showBranch 
    • خروجی رنگ را برای دستور git show branch فعال یا غیرفعال می کند. 
  20. color.status 
    • یک مقدار boolean که خروجی رنگ را برای git status فعال یا غیرفعال می کند. 
  21. color.status. <slot> 

برای تعیین رنگ سفارشی برای عناصر مشخص شده ی git status استفاده می شود. <slot> از مقادیر زیر پشتیبانی می کند: 

  1. header 
  • متن header ناحیه status را هدف قرار می دهد. 
  1. added یا updated 
  • هر دو مربوط به فایل های هدف که اضافه شده اما commit نشده اند، هستند.
  1. changed 
  • فایل هایی را که اصلاح می شوند اما به git index اضافه نمی شوند، هدف قرار می دهد. 
  1. untracked 
  • فایل هایی را که توسط Git ردیابی نمی شوند، هدف قرار می دهد. 
  1. branch 
  • رنگ را به شاخه ی فعلی اعمال می کند. 
  1. nobranch 
  • رنگ هشدار "no branch" در آن نشان داده شده است. 
  1.  unmerge 
  • فایل هایی را که تغییر merge شده ندارند، رنگی می کند. 

نام های مستعار Aliases

ممکن است با مفهوم نام مستعار از خط فرمان سیستم عامل خود آشنا باشید. در غیر این صورت، آن ها میانبرهای سفارشی هستند که تعریف می کنند کدام دستور به دستورهای طولانی تر یا ترکیبی گسترش می یابد. نام های مستعار در نوشتن دستورهای رایج، در وقت و انرژی شما صرفه جویی می کنند. Git ، سیستم نام مستعار خاص خود را ارائه می دهد. یک مورد معمول برای نام های مستعارGit ، کوتاه کردن دستور commit است. نام مستعار Git در فایل های پیکربندی Git ذخیره می شود. این بدان معنی است که می توانید از دستور git config برای پیکربندی نام های مستعار استفاده کنید. 

git config --global alias.ci commit

این مثال یک نام مستعار برای دستور git commit ایجاد می کند. سپس می توانید با اجرای git ci ،git commit  را فراخوانی کنید. نام مستعار همچنین می تواند نام های مستعار دیگر را برای ایجاد ترکیب های قدرتمند، ارجاع دهد. 

git config --global alias.ci commit

این مثال یک نام مستعار amend  را ایجاد می کند که ci نام مستعار را به یک نام مستعار جدید که از --amend flag استفاده می کند، ترکیب می کند. 

Formatting & whitespace (قالب بندی و فضای خالی) 

Git ، دارای چندین ویژگی "whitespace" است که می تواند پیکربندی شود تا هنگام استفاده از git diff مشکلات whitespace را برجسته کند. مشکلات whitespace با استفاده از رنگ پیکربندی شده ی color.diff.whitespace ، برجسته خواهد شد. 

ویژگی های زیر به طور پیش فرض فعال هستند: 

  • blank-at-eol فضای خالی را در انتهای خط برجسته می کند. 
  • space-before-tab یک کاراکتر فاصله را برجسته می کند که هنگام تو رفتن یک خط، قبل از یک tab  ظاهر می شود. 
  • blank-at-eof خط های خالی درج شده در انتهای فایل را برجسته می کند. 

ویژگی های زیر به طور پیش فرض غیرفعال شده است: 

  • indent-with-non-tab خطی را برجسته می کند که به جای tab ها با فاصله وارد شده است. 
  • tab-in-indent یک تورفتگی tab اولیه را به عنوان یک خطا برجسته می کند. 
  • trailing-space مختصر نویسی برای blank-at-eol و blank-at-eof است. 
  • cr-at-eol یک carriage-return را در انتهای خط برجسته می کند. 
  • tabwidth = تعریف می کند که چند موقعیت یا مکان کاراکتر، یک tab را به خود اختصاص داده است. مقدار پیش فرض 8 است. مقدار های مجاز 1-63 است. 

خلاصه 

در این مقاله، ما به استفاده از دستور git config پرداختیم. ما در مورد این که دستور، یک متد راحت برای ویرایش فایل های خام git config در filesystem است،  بحث کردیم. همچنین عملیات اولیه خواندن و نوشتن را برای گزینه های پیکربندی بررسی کردیم. نگاهی به الگوهای پیکربندی معمول انداختیم: 

  • شیوه ی پیکربندی ویرایش گر  Git
  • چگونگی نادیده گرفتن (override) سطح های پیکربندی
  • شیوه ی تنظیم مجدد پیش فرض های پیکربندی 
  • شیوه ی سفارشی سازی رنگ های git

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

منبع 

https://www.atlassian.com/git/tutorials/setting-up-a-repository/git-config

online-support-icon