Chapters ▾ 2nd Edition

A1.6 پیوست A: گیت در محیط‌های دیگر (Git in Other Environments) - گیت در بش (Git in Bash)

گیت در بش (Git in Bash)

اگر کاربر Bash هستید، می‌توانید از بعضی قابلیت‌های shell خود استفاده کنید تا تجربه کار با Git برایتان راحت‌تر و کاربرپسندتر شود. Git در واقع همراه با پلاگین‌هایی برای چندین shell ارائه می‌شود، اما به‌طور پیش‌فرض فعال نیست.

ابتدا لازم است یک نسخه از فایل completions را از source code نسخه Git release‌ای که استفاده می‌کنید دریافت کنید. با دستور git version نسخه خود را بررسی کنید، سپس از git checkout tags/vX.Y.Z استفاده کنید، جایی که vX.Y.Z نسخه Git شماست. فایل contrib/completion/git-completion.bash را در جایی مثل home directory کپی کنید و این کد را به .bashrc خود اضافه کنید:

. ~/git-completion.bash

وقتی این کار انجام شد، وارد یک Git repository شوید و تایپ کنید:

$ git chec<tab>

… و Bash به‌صورت خودکار به git checkout کامل می‌کند. این قابلیت با تمام subcommandsهای Git، command-line parametersها و remotes و ref names (در صورت نیاز) کار می‌کند.

همچنین می‌توانید prompt خود را سفارشی‌سازی کنید تا اطلاعات مربوط به Git repository در current directory نمایش داده شود. این کار می‌تواند به‌سادگی یا پیچیدگی دلخواه شما باشد، اما معمولاً چند بخش کلیدی وجود دارد که بیشتر افراد می‌خواهند ببینند، مثل current branch و status دایرکتوری کاری. برای افزودن این موارد به prompt، کافی است فایل contrib/completion/git-prompt.sh را از Git source repository به home directory خود کپی کنید و چیزی شبیه به این را به .bashrc اضافه کنید:

. ~/git-prompt.sh
export GIT_PS1_SHOWDIRTYSTATE=1
export PS1='\w$(__git_ps1 " (%s)")\$ '

در اینجا: - \w مسیر current working directory را چاپ می‌کند. - \$ همان نماد $ در prompt را چاپ می‌کند. - __git_ps1 " (%s)" تابعی است که توسط git-prompt.sh ارائه شده و با یک آرگومان formatting فراخوانی می‌شود.

حالا bash prompt شما وقتی داخل یک پروژه تحت کنترل Git باشید، به این شکل دیده می‌شود:

Customized `bash` prompt
نمودار 184. Customized bash prompt

هر دو اسکریپت همراه با مستندات مفید ارائه می‌شوند؛ برای اطلاعات بیشتر محتوای git-completion.bash و git-prompt.sh را بررسی کنید.

scroll-to-top