برنامه نویسی 445 بازدید

همه ما به عنوان توسعه‌دهنده به خوبی با Git آشنا هستیم، چون بخشی مهمی از فعالیت روزانه ما را تشکیل می‌دهد. اغلب توسعه‌دهندگان نرم‌افزار همیشه از Git استفاده می‌کنند و هیچ روزی نیست که با آن تعامل نداشته باشند. ما می‌توانیم Git را از ترمینال اجرا کنیم یا از برخی ابزارهای شخص ثالث مانند Sourcetree استفاده کنیم.

اما برخی عاشقان ترمینال وجود دارند که دوست دارند Git را دائماً و صرفاً از ترمینال اجرا کنند. بنابراین در مواردی برای آن‌ها دشوار است که دستورهای طولانی Git را به خاطر بسپارند و مداوماً وارد کنند. بدیهی است که وارد کردن مداوم دستورهای طولانی، کاری زمان‌بر و خسته‌کننده محسوب می‌شود.

چاره کار چیست؟ در این نوشته برخی میانبرها برای این دستورهای بسیار بلند را معرفی می‌کنیم. این میانبرها، اسامی مستعار Git یا Git Alias نامیده می‌شوند و نجات‌دهنده ما هستند. bash_profile جایی است که می‌توانیم این اسمی مستعار را وارد کنیم.

چگونه bash_profile را باز کنیم؟

در پنجره ترمینال خود می‌توانید با استفاده از دستور زیر به سادگی bash_profile را باز کنید:

vim ~/.bash_profile

اینک با زدن کلید i در vim editor وارد حالت درج شوید.

ایجاد نخستین اسم مستعار در bash_profile:

نخستین برنامه‌ای که در همه زبان‌های برنامه‌نویسی آموزش داده می‌شود برنامه «hello world» است. ما نیز از همین سنت پیروی می‌کنیم و نخستین اسم مستعاری که می‌خواهیم بنویسیم دستور hello است. به این منظور bash_profile را باز کنید و خط زیر را در آن وارد نمایید:

alias hello="echo Hello Boudhayan!! How are you?"

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

source ~/.bash_profile

اینک اگر عبارت hello را در ترمینال وارد کنید، عبارت «?Hello Boudhayan!! How are you» نمایش می‌یابد:

بدین ترتیب با روش ایجاد اسم مستعار در bash_profile آشنا شدید.

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

git clone

ما از این دستور git برای کلون کردن یک مخزن ریموت روی سیستم محلی‌مان استفاده می‌کنیم. با این که این یک دستور کوتاه است؛ اما می‌خواهیم با یادگیری اسامی مستعار شروع به یادگیری روش کوتاه‌سازی هر چه بیشتر آن آشنا شویم. بدین ترتیب bash_profile را باز کنید، خط زیر را در آن بنویسید و آن را بارگذاری مجدد کنید.

alias gc="git clone"

از این پس دیگر هر دفعه برای کلون کردن یک ریپازیتوری نیاز نیست دستور زیر را وارد کنید:

git clone <remote repository url>

به جای آن می‌توانید دستور زیر را استفاده کنید:

gc <remote repository url>

بدین ترتیب ریپازیتوری ریموت مورد نظر شما در سیستم محلی کلون می‌شود.

ایجاد اسامی مستعار بیشتر

ما در گیت با استفاده از دستورهای زیر کامیت‌های خود را در شاخه‌های master یا development پوش می‌کنیم:

git push origin develop

git push origin master

اینک می‌توانیم نسخه‌های کوتاه‌تری از دستورهای فوق را بسازیم:

alias gpd="git push origin develop"

alias gpm="git push origin master"

بنابراین از این پس می‌توانیم از gpd و gpm برای پوش کردن کامیت های محلی به ترتیب به شاخه‌های master و development استفاده کنیم. تا به اینجا با روش ایجاد اسامی مستعار برای دستورهای گیت آشنا شدید. در ادامه برخی اسامی مستعار بیشتر را ارائه کرده‌ایم که در زمان برنامه‌نویسی بسیار به کار می‌آیند:

alias g='git'
alias gm="git merge"
alias gmv='git mv'
alias grm='git rm'
alias gs='git status'
alias gss='git status -s'
alias gl='git pull'
alias gc='git clone'
alias ga='git add'
alias grh='git reset HEAD'
alias gap='git add -p'
alias ga='git add -A'
alias glum='git pull upstream master'
alias gpr='git pull --rebase'
alias gppd='git pull && git push origin develop'
alias gppm='git pull && git push origin master'
alias gfrb='git fetch && git rebase'
alias gp='git push'
alias gcount='git shortlog -sn'
alias gcp='git cherry-pick'
alias gco='git checkout'
alias gcm='git checkout master'
alias gsl="git shortlog -sn"
alias gwc="git whatchanged"
alias gnew="git log HEAD@{1}..HEAD@{0}"
alias gcaa="git commit -a --amend -C HEAD"
alias gstd="git stash drop"
alias gpm='git push origin master'
alias gpd='git push origin development'
alias gr='git remote'
alias gra='git remote add'
alias gd='git diff'
alias gb='git branch'
alias gt="git tag"

تابع‌های shell

ما می‌توانیم از تابع‌های shell نیز برای اعلان کردن اسامی مستعار بیشتر برای git استفاده کنیم. اما در آغاز باید با روش نوشتن تابع‌های shell آشنا باشیم. نوشتن یک تابع shell که شبیه تابع‌های معمولی در زبان C است بسیار آسان محسوب می‌شود.

function function_name() {
         command1
         command2
         .......
         commandn
}

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

mkdir <directory_name>
cd <directory_name>

ما می‌توانیم این دو دستور را با ایجاد یک تابع ساده در bash_profile به صورت زیر با هم ترکیب کنیم:

function mdm() {
   mkdir -p $1   #here $1 is the first parameter to the function.
   cd $1
}

اینک منبع bash_profile را بارگذاری کنید و دستور زیر را اجرا نمایید:

mdm test

دستور فوق یک دایرکتوری به نام test در مسیر جاری ایجاد می‌کند و به آن دایرکتوری می‌رود.

اسامی مستعار پیشرفته Git

برای پوش کردن کد به یک شاخه ریموت باید یک کامیت با پیام ایجاد کنیم. تنها در این صورت می‌توانیم به یک شاخه پوش کنیم. بنابراین اساساً این کار شامل دو دستور (کامیت و پوش) خواهد بود. اما می‌خواهیم همین کار را با تنها یک خط دستور و نوشتن تابع shell برای آن اجرا کنیم. این کار به سادگی و از طریق نوشتن یک تابع shell ساده میسر است. bash_profile را باز کنید و تابع زیر را بنویسید:

function gcp() {
      git commit -am "$1" && git push 
}

bash_profile را بارگذاری مجدد کرده و از دستور زیر استفاده کنید:

gcp "initial commit"

از این پس می‌توانیم از این دستور gcp برای کامیت و پوش کردن در یک دفعه استفاده کنیم. به طور معمول در یک شاخه development، همه اعضای تیم تغییرات خود را به صورت روزانه پوش می‌کنند. بنابراین در برخی موارد، یافتن یک کامیت خاص در میان همه کامیت‌ها بسیار دشوار می‌شود. برای مدیریت آسان این وضعیت، باید تابعی بنویسیم که به دنبال پیام خاصی در log-های کامیت بگردد و آن کامیت را بازگرداند. به این منظور تابعی مانند زیر می‌نویسیم:

function gfc() {
         git log --all --grep="$1"
}

اگر در مواردی بخواهیم بر اساس پیام یک کامیت به دنبال آن بگردیم، در این صورت می‌توانیم از تابع gfc خود به صورت زیر استفاده کنیم:

gfc "<commit message>"

سخن پایانی

ما در این نوشته با روش استفاده از میانبرها برای دستورهای git آشنا شدیم. این اسامی مستعار و تابع‌هایی که در راهنما معرفی شدند، باعث صرفه‌جویی زمانی زیادی در هنگام نوشتن دستورهای بلند می‌شوند و کارها را روان‌تر می‌کنند. شما می‌توانید اسامی مستعار و تابع‌های مختلفی را که می‌خواهید اضافه کنید و اصلاحاتی در آن‌ها ایجاد کنید.

اگر این نوشته برای شما مفید بوده است، پیشنهاد می‌کنیم از آموزش‌های زیر استفاده کنید:

==

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

«میثم لطفی» دانش‌آموخته ریاضیات و شیفته فناوری به خصوص در حوزه رایانه است. وی در حال حاضر علاوه بر پیگیری علاقه‌مندی‌هایش در رشته‌های برنامه‌نویسی، کپی‌رایتینگ و محتوای چندرسانه‌ای، در زمینه نگارش مقالاتی با محوریت نرم‌افزار نیز با مجله فرادرس همکاری دارد.

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *