آموزش دستورات گیت – مقدمه:

در سومین بخش از آموزش کار با گیت می خواهیم به ادامه آموزش دستورات گیت بپردازیم.

هدف ما آموزش دستورات کاربردی git برای استفاده در پروژه های وردپرس می باشد. شما در این بخش با بخش بسیار زیادی از دستورات گیت و نحوه استفاده از آن ها در پروژه های خود آشنا خواهید شد.

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

آموزش دستورات گیت

بخش اول: مفاهیم اولیه برای درک دستورات گیت

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

استفاده از گیت برای وردپرس – بخش اول
ساخت یک مخزن گیت – بخش دوم

به طور کلی برای درک کلیه دستورات گیت ، می باید با سه مفهوم اصلی Working Directory و Staging Area و  Repository در گیت آشنایی داشته باشید. عکس زیر به خوبی شما را در این امر کمک می کند و می توانید با استفاده از آن، کلیه دستورات گیت را به راحتی درک نمایید.

ارتباط بین این سه بخش به صورت زیر می باشد:

نحوه ارتباط بین اجزا در گیت برای آموزش دستورات گیت

بخش دوم: نحوه حذف یک فایل از بخش Stage

در این قسمت از آموزش دستورات گیت ، روش های مختلف در مورد Unsatge  کردن فایل های مختلف یا همان حذف فایل ها از Stage را به صورت تیتر وار برای شما لیست کرده ایم:

  • روش Unstage کردن یک  فایل:

    برای این کار می توانید از دستور git rm – -cached به همراه نام فایل و مسیر آن، استفاده کنید. نمونه دستورات گیت در مورد Unstage  کردن فایل را می توانید در بخش زیر مشاهده نمایید.

  • روش های Unstage کردن کلیه فایل ها و فولدرها:

    برای حذف کردن کلیه فایل ها درون stage می توانید از دستور git rm –cached -r به همراه نقطه (به معنی همه) به مانند زیر استفاده کنید.

//git syntax to unstage
git rm --cashed <file>

//Sample of unstage for a css file
git rm --cached asset/css/style.css

//Sample of unstage all files 
git rm --cached --r .
//Sample of recovery for files that were deleted manually 
git rm $(git ls-files --deleted)

//If you have space between their names, you can use this one in the following 
git rm $(git ls-files --deleted -z | xargs -0 git rm)

بخش سوم: دستورات گیت برای مشاهده لاگ ها و تفاوت های بین فایل ها

برای مشاهده تاریخچه commit های مختلف در گیت از دستور log استفاده می شود. همین طور برای مشاهده و مقایسه آخرین تغییرات انجام شده و تفاوت فایل ها باهم، از دستور git diff می باید استفاده کنید.

این دستور ها، از دستورات گیت هستند که بسیار پر کاربرد بوده و در زیر به تفکیک در مورد هر کدام از آن ها به صورت خلاصه توضیح داده شده است:

  • مشاهده تاریخچه commit های صورت گرفته در پروژه:

    برای مشاهده همه commit های انجام شده در پروژه می توانید از دستور git log استفاده کنید. با اجرای این دستور، آیتم های مربوط به commit به نمایش در می آیند. این آیتم ها که در هر لاگ به نمایش در می آیند عبارتند از:

    • Commit ID : که ID مربوط به هر کامیت می باشد که عددی منحصر به فرد است.
    • Author : کسی که commit را انجام داده است (شامل نام او به همراه آدرس ایمیل فرد)
    • Date : تاریخ انجام commit را نمایش می دهد.
    • Message : پیامی را که در هر commit ثبت می شود را نمایش می دهد.
  • نمایش لاگ به همراه فایل هایی که در هر commit تغییر یافته اند:

    برای نمایش اینکه در هر commit چه فایل هایی تغییر کرده اند، از دستور git log –stat  به صورت زیر استفاده می کنید.

  • نمایش help مربوط به دستور log:

    برای نمایش help برای دستور log در گیت می توانید از دستور git log –help به صورت زیر استفاده کنید.

  • نمایش commit ها به صورت گراف:

    برای نمایش  به صورت گراف، از دستور git log –graph استفاده می شود. از این دستور برای نمایش branch ها و همین طور commit ها به شکل گراف استفاده می شود.

  • نمایش commit ها به صورت خطی:

    برای نمایش  commit ها به شکل خطی، از دستور git log –oneline استفاده می شود. با این دستور کل commit ها به صورت خطی و پشت سر هم در صفحه به نمایش در می آیند.

  • نمایش n کامیت آخربه صورت خطی:

    برای نمایش n کامیت آخر (مثلا 5 کامیت آخر در پروژه) می توانید از دستور git log -n –oneline استفاده کنید. با این دستور n تا commit آخر فقط به نمایش در می آیند.

  • نمایش فقط commit های مرتبط با merge:

    برای نمایش commit هایی که فقط در merge شدن branch ها اضافه شده اند، می توانید از دستور git log –merge به صورت زیر استفاده کنید.

  • مشاهده جزئیات کامل هر commit:

    جهت نمایش جزئیات کامل هر commit و تغییرات انجام شده در آن، می توانید از دستور git log -p استفاده کنید.

  • نمایش لاگ های با فرمت دلخواه:

    شما می توانید از فرمت خاص برای نمایش لاگ های commit های خود در گیت استفاده کنید. برای نمایش خلاصه و منظم ، عموما از دستور git log –pretty=format به همراه فرمت دلخواه خود، استفاده می شود.

    به عنوان نمونه یکی از این دستورات در زیر برای شما آمده است:

//Show log without any format
git log

//Show log with files which are changed in each commit
git log --stat

//show log as a graph
git log --graph

//show log as one line
git log --oneline

//show last 5 commits as oneline
git log -5 --oneline

//show only log related to branches merge
git log --merge

//show log with each specification in each commit
git log -p

//Show log with pretty format
git log --graph --pretty=format:'%Cred%h%Creset -%C(green)%d%Creset %s %Cgreen(%cr) %C(bold red)<%an>%Creset' --abbrev-commit

مشاهده تفاوت آخرین تغییرات و commit های انجام شده در گیت

یکی دیگر از دستورات گیت که می تواند بسیار کاربردی باشد. دستور git diff می باشد که تفاوت بین فایل ها را به نمایش در می آورد. در شکل زیر می توانید به سادگی مفهوم روش های مورد استفاده را مشاهده نمایید.

  • نمایش تغییرات commit نشده کلیه فایل ها در Working Directory با Staging Area:

    برای این کار می توانید از دستور git dif  استفاده نمایید. شکل کلی این دستور در ادامه برای شما آمده است.

  • نمایش تغییرات commit نشده یک فایل  در Working Directory با Staging Area:

    برای این کار می توانید از دستور git diff  به همراه نام فایل به صورت زیراستفاده نمایید.

  • نمایش تغییرات commit نشده فایل ها در Repository  با Staging Area:

    برای دیدن تفاوت بین فایل های commit شده با فایل های stage می توانید از دستور git diff –stage استفاده کنید.

  • نمایش تغییرات commit  شده در فایل ها:

    برای دیدن تفاوت بین فایل های commit شده با همدیگر یا به معنی دیگر، دیدن تفاوت فایل ها بین کامیت های مختلف، از دستور git diff به همراه ID هر کدام از commit های انجام شده استفاده می کنید.

  • دیدن دستور جامع استفاده از دستور diff:

    برای نمایش help مربوط به دستور diff کافی است از دستور git diff –help به صورت زیر استفاده نمایید.

//Show difference of all files between working directory and staging area
git diff

//Show difference of a file between working directory and staging area
git diff style.css

//Show difference  between repository and staging area
git diff --staged

//Show difference between separated commits
git diff ID1 ID2

//Show help for diff
git diff --help

بخش چهارم: آشنایی با Branch ها و نحوه ترکیب آن ها با دستور merge

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

برای اینکه پس از توسعه، هر branch را با ویژگی های اصلی به شاخه اصلی خود یا همان master اضافه کنید، کافی است از دستورات گیت با نام های merge و rebase استفاده کنید.

در ادامه به نکات مربوط به این زمینه خواهیم پرداخت:

آموزش دستورات گیت - استفاده از branch
  • نحوه ساخت یک branch جدید و وارد شدن در آن:

    برای ساخت یک branch جدید و وارد شدن به آن یا همان checkout کردن به آن از دستور git checkout -b به همراه نام branch استفاده می کنیم.

    همچنین برای ساخت و ایجاد یک branch می توانید از دستور git branch به همراه نام آن شاخه استفاده کنید.

  • رفتن به یک شاخه دیگر در گیت:

    برای جابجایی از یک شاخه به شاخه دیگر کافی است از دستور git checkout به همراه نام branch مربوطه استفاده کنیم.

  • دیدن راهنمای کامل دستورات مربوط به branch:

    برای دیدن کلیه دستورات مربوط به branch  می توانید از دستور git branch –help استفاده کنید.

  • دیدن راهنمای کامل دستورات مربوط به branch در داخل کنسول:

    برای دیدن کلیه دستورات مربوط به branch  در داخل کنسول خود، می توانید از دستور git branch –h استفاده کنید.

  • نمایش کلیه شاخه های موجود در یک پروژه:

    برای دیدن کلیه branch های موجود در یک پروژه می توانید از دستور git branch -a استفاده کنید.

  • پاک کردن یک شاخه در گیت:

    جهت حذف نمودن یک branch در گیت کافی است از دستور git branch -d به همراه نام branch استفاده کنید.

//Create a new branch
git branch new1

//Create a new branch and checkout in new branch
git checkout -b new1

//Checkout to master
git checkout master

//Show helps for branch
git branch --help
git branch -h

//Show all branches in a project
git branch -a

//Remove new1 branch
git branch -d new1

ترکیب شاخه های مختلف در یک پروژه با merge و rebase

در پروژه های گروهی، عموما در بسیاری از زمان ها، branch مختلف توسعه باید باهم دیگر در پروژه اصلی ترکیب شده و ادغام گردند.

در واقع دستورهای merge و همین طور rebase این هدف را دارند که چندین branch یا شاخه مختلف را باهم ترکیب کنند. در واقع با هر دو این دستورات گیت ، می توانید شاخه های جدا را باهم ترکیب کنید.

در زیر به نکات مربوط به دستور merge و rebase خواهیم پرداخت:

آموزش دستورات گیت - استفاده از merge
  • راهنمای استفاده از دستور merge و rebase  :

    برای مشاهده راهنمای استفاده از دستور merge می توانید از دستورهای git merge –help و همین طور git merge -h استفاده نمایید.

    برای دستور rebase نیز می توانید از همین فرمت ها برای مشاهده راهنمای دستورات آن استفاده کنید.

  • انجام عملیات ترکیب branch ها:

    برای انجام ترکیب بین دو شاخه مثلا شاخه branch1 و شاخه master ، کافی است ابتدا به شاخه master وارد شوید و سپس دستور git merge branch1 را اجرا کنید.

    برای دیدن نتایج آن (که آیا merge به درستی صورت گرفته است یا خیر) می توانید پس از انجام این کار در شاخه master از دستور git log –graph استفاده کنید.

    برای rebase کردن هم ، دقیقا مانند فرآیند بالا عمل می کنید. اینکه merge و rebase در عمل باهم چه تفاوت هایی دارند را می توانید در لینک مقاله ای که در انتهای این مقاله آمده است، مشاهده نمایید.

  • انجام عملیات ادغام بدون وارد شدن تاریخچه commit های شاخه مورد نظر:

    در صورتی که بخواهید شاخه branch1 را در master ادغام کنید به صورتی که commit های شاخه branch1 وارد شاخه اصلی نشوند کافی است از دستور  git merge branch1 –squash  استفاد کنید.

//Show git merge help
git merge --help
git merge -h

//show git rebase help
git rebase --help
git rebase -h 

//Merge branch1 into master when you are in master branch
git merge branch1

//Rebase branch1 into master when you are in master branch
git rebase branch1

//git merge without getting history of branch1 in master
git merge branch1 --squash

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

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

در این حالت است که می باید از دستورات مربوط به Undo کردن کارها در گیت استفاده کنید. برای این کار عموما از اشکال مختلف دستور reset استفاده می شود که در ادامه به صورت کامل به حالت های مختلف آن اشاره می کنیم:

  • بازگردانی تغییرات پیش از اضافه کردن فایل ها به Staging Area :

    اولین سناریو در این زمینه زمانی اتفاق می افتد که شما تغییراتی را در فایل های خود انجام داده اید اما هنوز فایل های خود را به Staging Area اضافه یا همان add نکرده اید.

    مثلا فرض کنید فایل style.ss را تغییر داده اید و بدون add کردن آن، تصمیم دارید تغییرات موجود را به حالت قبل بازگردانی کنید.

    در این حالت می توانید از دستور git checkout — style.css استفاده کنید تا فایل مورد نظر به حالت قبل از تغییرات بازگردد.

  • بازگردانی فایل ها، زمانی که در Staging Area می باشند:

    در این حالت شما به عنوان مثال تغییراتی را در فایل style.css انجام داده اید و آن را به Staging Area اضافه کرده اید. در این حالت برای بازگردانی فایل به Working Directory می توانید از دستور git reset HEAD به همراه نام فایل استفاده کنید.

    در واقع با انجام این دستور، شما فایل مورد نظر خود را Unstage کرده اید.

  • بازگردانی commit انجام شده به حالت Stage:

    فرض کنید که شما یک commit را انجام داده اید. برای اینکه این commit را به حالت stage (حالت قبل از commit) درآورید، کافی است از دستور git reset –soft به همراه ID مربوط به آن commit استفاده کنید.

    در این حالت فایل هایی که commit کرده اید، به حالت stage باز گردانده خواهند شد.

آموزش دستورات گیت - استفاده از reset
  • بازگردانی تغییرات commit شده به مرحله Working Space :

    در صورتی که بخواهید فایل های یک commit را به حالت Working Space بازگردانید، کافی است از دستور git reset –mixed به همراه commit ID مربوط به آن استفاده کنید.

  • بازگردانی فایل ها از یک commit به commit های قبل از آن:

    در این حالت شما می خواهید که از کلیه تغییرات مربوط به یک commit صرف نظر کرده و کلیه فایل ها را به حالت یک commit دیگر در بیاورید.

    در این صورت کافی است تا از دستور git commit –hard به همراه commit ID ای که می خواهیم شرایط را به آن برگردانیم، استفاده کنیم.

  • نحوه برگرداندن commit  انجام شده در پروژه:

    در صورتی که بخواهیم همه commit های انجام شده را برگردانیم و در واقع عملیات undo را انجام دهیم، از دستور git checkout — به همراه نقطه استفاده می کنیم.

  • بازگرداندن تغییرات با دستور revert :

    در صورتی که بخواهیم به commit های قبلی بازگشت نماییم بدون اینکه بخواهیم آن ها را rewrite کنیم، کافی است از دستور Revert استفاده کنیم.

    در واقع دستور revert یک commit جدید در ادامه commit ها ساخته و ما را به حالت commit قبل بر می گرداند. این باعث می شود که  commit های قبلی از بین نرفته و در history پروژه باقی بمانند.

//Undo style.css in wokring space
git checkout -- style.css

//Undo style.css from staging area to working directory
git reset HEAD style.css

//Undo style.css from commitID1 to staging area (e.g. previous commit is commitID2)
git reset --soft commitID2

//Undo style.css from commitID1 to working space (e.g. previous commit is commitID2)
git reset --mixed commitID2

//Undo style.css from commitID1 to commitID2
git reset --H commitID2 

//Undo all of commits
git checkout -- .

//Revet commits without rewriting other commits
git revert commitID2 

بخش ششم: آشنایی با مفهوم Stash در دستورات گیت

دستور stash از دستورات بسیار کاربردی در گیت می باشد. فرض کنید که شما در یک branch باشید و بدون commit کردن درون آن، به یک branch دیگر checkout کنید.

در این حالت کل تغییراتی که شما در branch اول داده اید، به branch جدید منتقل می شود. برای جلوگیری از این مشکل مفهومی به نام stash  در دستورات گیت موجود می باشد.

در واقع شما نه می خواهید که تغییرات انجام شده در branch اول را commit  کنید و در عین حال می خواهید به branch دوم هم switch کنید بدون اینکه تغییرات در branch اول را از دست بدهید.

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

  • نمایش راهنمای دستور stash :

    برای نمایش راهنمای دستور stash کافی است از git stash –help و یا git stash -h استفاده کنید.

  • اضافه کردن تغییرات به stash:

    برای اضافه کردن تغییرات خود به stash کافی است قبل از انجام checkout از دستور git stash استفاده کنید.

  • مشاهده لیست تغییرات در stash:

    برای نمایش لیست کلیه تغییرات در stash می توانید از دستور git stash list استفاده کنید.

  • پاک کردن یک stash:

    برای پاک کردن یک stash در لیست خود، کافی است توسط دستور قبلی، لیست همه stash ها را در بیاورید. سپس با استفاده از دستور git stash drop به همراه نام آن، آن را از stash حذف نمایید.

  • اضافه کردن پیام دلخواه به یک stash:

    شما می توانید در هنگام ذخیره کردن یک stash یک پیام دلخواه برای آن ذخیره کنید. برای این کار کافی است از دستور git stash save به همراه پیام دلخواه خود استفاده کنید.

آموزش دستورات گیت - استفاده از stash
  • نمایش محتویات یک stash:

    اگر بخواهید که محتویات داخل یک stash را مشاهده کنید کافی است از دستور git stash show -p به همراه نام stash مورد نظر خود، استفاده کنید.

  • بازگردانی فایل ها از stash به شاخه مورد نظر بدون پاک شدن آن ها در stash:

    در صورتی که بخواهید یک stash را به حالت تغییرات خود بازگردانید، کافی است از دستور  git stash apply به همراه نام stash مورد نظر استفاده کنیم.

    در نظر داشته باشید که با اجرای این دستور، فایل ها به شاخه index بازگردانی می شوند اما همچنان در stash نیز باقی می مانند. برای پاک کردن آن ها از stash مجددا باید از دستور drop استفاده کنید.

  • بازگردانی فایل ها از stash به شاخه مورد نظر به همراه پاک شدن آن ها در stash:

    در صورتی که بخواهید علاوه بر بازگردانی حالت stash، آن ها را در stash نیز حذف نمایید، از دستور pop به جای apply استفاده می کنید.

//Show help for stash
git stash --help
git stash -h 

//Add changes to stash
git stash

//Show list of stashes 
git stash list

//Remove from stash
git stash drop stash@{1}

//Add message to stash
git stash save "Put your message there"

//Show a stash contain 
git stash show -p stash@{2}

//Return changes from stash without removing from stash list
git stash apply stash@{2}

//Return changes from stash with removing from stash list
git stash pop stash@{2}

بخش هفتم: صرف نظر کردن از track شدن توسط دستورات گیت

ممکن است در پروژه خود، بسیار از دایرکتوری ها یا فایل ها باشند که شما نیازی به track شدن آن ها در مخزن خود ندارید. برای این مورد از مفهومی به نام gitignore در دستورات گیت استفاده می شود.

در زیر به بعضی از نکات مهم در مورد gitignore اشاره شده است. در ضمن اگر می خواهید که با نحوه پیاده سازی مخزن گیت و همین  طور gitignore در phpStorm آشنا شوید، می توانید از مقاله استفاده کنید:

آشنایی با نحوه پیاده سازی gitignore در phpstorm
  • ساخت فایل gitignore در دایرکتوری اصلی پروژه:

    برای ساخت فایل gitignore کافی است از دستور git touch .gitignore استفاده نمایید. در این صورت فایل gitignore در داخل دایرکتوری اصلی پروژه شما ساخته می شود.

  • اضافه کردن دایرکتوری ها و فایل ها برای track نشدن توسط گیت:

    برای track نشدن یک دایرکتوری، کافی است تا آدرس آن دایرکتوری را به همراه علامت “/” در انتهای آن مشخص کنیم.

    اگر بخواهید کلیه فایل های متنی در پروژه شما track نشوند، کافی است از علامت ستاره به همراه پسوند فایل در این فایل استفاده کنیم.

  • استثنا قائل شدن در مورد یک فایل از یک دسته خاص که untrack شده اند:

    فرض کنید که کلیه فایل های text به صورت untrack در پروژه شما تعریف شده اند. برای استثنا قائل شدن فایل متنی مثل sample.txt کافی است به ابتدا فایل علامت “!” اضافه کرده و آن را در فایل مورد نظر اضافه کنیم.

  •  ignore کردن دایرکتوری یا فایل هایی که از قبل track شده اند:

    برای untrack کردن مسیرها یا فایل هایی که پیش تر track شده اند، کافی است ابتدا با دستور cached آن ها را از حالت track خارج کنیم و سپس با انجام add و commit، آن ها به صورت اتومات تبدیل به untrack خواهند شد.

//Create gitignore file in project root
git touch .gitignore

//ignore files which were tracked before 
git rm --cashed -r .
git add .
git commit "This is for ignore files..."

نتیجه گیری برای مقاله آموزش دستورات گیت

در این مقاله به صورت خلاصه در مورد دستورات گیت و نحوه استفاده و کاربرد آن ها به صورت لیست وار صبحت شد.

در ابتدا با روش های stage کردن فایل ها آشنا شدیم و در قسمت بعد یاد گرفتیم که چگونه می توانید تغییرات مختلف در لاگ های گیت را مشاهده کنیم. همچنین با دستورات گیت در زمینه نمایش آخرین تغییرات در مخزن و commit های انجام شده آشنا شدیم.

در ادامه این مقاله با دستورات گیت در زمینه branch ها و همین طور نحوه ترکیب یا merge کردن آن ها صحبت کردیم. سپس با روش های undo کردن در گیت آشنا شدیم.

در بخش های انتهایی نیز با مفهوم stash و همین طور راه اندازی gitignore آشنا شدیم و در مورد آن ها به صورت خلاصه به دستورات مورد نیاز در گیت اشاره کردیم.

ممکن است شما موارد بیشتری را بدانید که ما فراموش کرده ایم تا در این مقاله قرار دهیم.

اگر شما از این موارد آگاه هستید، حتما در بخش نظرات عنوان کنید تا آن را به مقاله “آموزش دستورات کاربردی گیت” اضافه کنیم. در ضمن اگر این مقاله را مفید دیدید، حتما آن را به دوستان خود معرفی کرده یا در شبکه های اجتماعی به اشتراک بگذارید.

نظر شما در مورد مقاله دستورات گیت چیست؟

راهنما برای مطالعه بیشتر:

در صورتی که نیاز به مطالعه بیشتر در مورد مقاله ” دستورات کاربردی گیت ” دارید، می توانید از لینک های زیر استفاده نمایید:

راهنما برای خواندن سایر مقالات سایت به صورت دسته بندی شده:

شما می توانید از طریق لینک های کاربردی زیر به سایر مقالات سایت که کاملا بصورت طبقه بندی شده وجود دارد، مراجعه نموده و از آن ها استفاده کنید:

بازگشت به مرجع طراحی قالب وردپرس