اسامی مستعار (Aliases) در GIT — از صفر تا صد
همه ما به عنوان توسعهدهنده به خوبی با 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 استفاده کنیم. تا به اینجا با روش ایجاد اسامی مستعار برای دستورهای گیت آشنا شدید. در ادامه برخی اسامی مستعار بیشتر را ارائه کردهایم که در زمان برنامهنویسی بسیار به کار میآیند:
1alias g='git'
2alias gm="git merge"
3alias gmv='git mv'
4alias grm='git rm'
5alias gs='git status'
6alias gss='git status -s'
7alias gl='git pull'
8alias gc='git clone'
9alias ga='git add'
10alias grh='git reset HEAD'
11alias gap='git add -p'
12alias ga='git add -A'
13alias glum='git pull upstream master'
14alias gpr='git pull --rebase'
15alias gppd='git pull && git push origin develop'
16alias gppm='git pull && git push origin master'
17alias gfrb='git fetch && git rebase'
18alias gp='git push'
19alias gcount='git shortlog -sn'
20alias gcp='git cherry-pick'
21alias gco='git checkout'
22alias gcm='git checkout master'
23alias gsl="git shortlog -sn"
24alias gwc="git whatchanged"
25alias gnew="git log HEAD@{1}..HEAD@{0}"
26alias gcaa="git commit -a --amend -C HEAD"
27alias gstd="git stash drop"
28alias gpm='git push origin master'
29alias gpd='git push origin development'
30alias gr='git remote'
31alias gra='git remote add'
32alias gd='git diff'
33alias gb='git branch'
34alias gt="git tag"
تابعهای shell
ما میتوانیم از تابعهای shell نیز برای اعلان کردن اسامی مستعار بیشتر برای git استفاده کنیم. اما در آغاز باید با روش نوشتن تابعهای shell آشنا باشیم.
نوشتن یک تابع shell که شبیه تابعهای معمولی در زبان C است بسیار آسان محسوب میشود.
1function function_name() {
2 command1
3 command2
4 .......
5 commandn
6}
اینک تابع خود را بررسی میکنیم. این تابع یک دایرکتوری در مسیر جاری ایجاد میکند و سپس بیدرنگ به آن دایرکتوری میرود. میدانیم که دستورهای زیر نیز این کار را اجرا میکنند:
mkdir <directory_name> cd <directory_name>
ما میتوانیم این دو دستور را با ایجاد یک تابع ساده در bash_profile به صورت زیر با هم ترکیب کنیم:
1function mdm() {
2 mkdir -p $1 #here $1 is the first parameter to the function.
3 cd $1
4}
اینک منبع bash_profile را بارگذاری کنید و دستور زیر را اجرا نمایید:
mdm test
دستور فوق یک دایرکتوری به نام test در مسیر جاری ایجاد میکند و به آن دایرکتوری میرود.
اسامی مستعار پیشرفته Git
برای پوش کردن کد به یک شاخه ریموت باید یک کامیت با پیام ایجاد کنیم. تنها در این صورت میتوانیم به یک شاخه پوش کنیم. بنابراین اساساً این کار شامل دو دستور (کامیت و پوش) خواهد بود. اما میخواهیم همین کار را با تنها یک خط دستور و نوشتن تابع shell برای آن اجرا کنیم. این کار به سادگی و از طریق نوشتن یک تابع shell ساده میسر است.
bash_profile را باز کنید و تابع زیر را بنویسید:
1function gcp() {
2 git commit -am "$1" && git push
3}
bash_profile را بارگذاری مجدد کرده و از دستور زیر استفاده کنید:
gcp "initial commit"
از این پس میتوانیم از این دستور gcp برای کامیت و پوش کردن در یک دفعه استفاده کنیم. به طور معمول در یک شاخه development، همه اعضای تیم تغییرات خود را به صورت روزانه پوش میکنند. بنابراین در برخی موارد، یافتن یک کامیت خاص در میان همه کامیتها بسیار دشوار میشود. برای مدیریت آسان این وضعیت، باید تابعی بنویسیم که به دنبال پیام خاصی در log-های کامیت بگردد و آن کامیت را بازگرداند. به این منظور تابعی مانند زیر مینویسیم:
1function gfc() {
2 git log --all --grep="$1"
3}
اگر در مواردی بخواهیم بر اساس پیام یک کامیت به دنبال آن بگردیم، در این صورت میتوانیم از تابع gfc خود به صورت زیر استفاده کنیم:
gfc "<commit message>"
سخن پایانی
ما در این نوشته با روش استفاده از میانبرها برای دستورهای git آشنا شدیم. این اسامی مستعار و تابعهایی که در راهنما معرفی شدند، باعث صرفهجویی زمانی زیادی در هنگام نوشتن دستورهای بلند میشوند و کارها را روانتر میکنند. شما میتوانید اسامی مستعار و تابعهای مختلفی را که میخواهید اضافه کنید و اصلاحاتی در آنها ایجاد کنید.
اگر این نوشته برای شما مفید بوده است، پیشنهاد میکنیم از آموزشهای زیر استفاده کنید:
- مجموعه آموزشهای برنامهنویسی
- آموزش گیت (Git) برای مدیریت نسخه توزیع شده
- مجموعه آموزشهای ابزارها و راهکارهای مدیریت وبسایتها
- آموزش تاریخچه گیت (Git) و مقدمات آن
- مفاهیم مقدماتی Git Merge و Git Rebase — به زبان ساده
- راهنمای پیشرفته Git برای مبتدیان — به زبان ساده
- نصب گیت (Git) روی اوبونتو — به زبان ساده
- چگونه از گیت (Git) به طرز موثرتری استفاده کنیم؟ — به زبان ساده
==