آموزش دستورات گیت – مقدمه:
در سومین بخش از آموزش کار با گیت می خواهیم به ادامه آموزش دستورات گیت بپردازیم.
هدف ما آموزش دستورات کاربردی git برای استفاده در پروژه های وردپرس می باشد. شما در این بخش با بخش بسیار زیادی از دستورات گیت و نحوه استفاده از آن ها در پروژه های خود آشنا خواهید شد.
این بخش، سومین قسمت از آموزش های کاربردی گیت می باشد که به طور خلاصه در مورد دستورات پر کاربرد گیت در پروژه ها و نحوه کار و استفاده از دستورات گیت خواهیم پرداخت.
بخش اول: مفاهیم اولیه برای درک دستورات گیت
قبل از شروع به بیان دستورات گیت و کاربردهای آن ها، باید مفاهیم اولیه مربوط به گیت را درک نمایید. در مقاله های زیر شما می توانید درک اولیه ای را از گیت و کاربردهای آن و همین طور دستورات اولیه در گیت بدست آورید:
به طور کلی برای درک کلیه دستورات گیت ، می باید با سه مفهوم اصلی Working Directory و Staging Area و Repository در گیت آشنایی داشته باشید. عکس زیر به خوبی شما را در این امر کمک می کند و می توانید با استفاده از آن، کلیه دستورات گیت را به راحتی درک نمایید.
ارتباط بین این سه بخش به صورت زیر می باشد:
بخش دوم: نحوه حذف یک فایل از بخش Stage
در این قسمت از آموزش دستورات گیت ، روش های مختلف در مورد Unsatge کردن فایل های مختلف یا همان حذف فایل ها از Stage را به صورت تیتر وار برای شما لیست کرده ایم:
//When you add files or folder wrongly and want to unstage all of them git reset //git syntax to unstage git rm --cashed //Sample of unstage for a css file git rm --cached asset/css/style.css //Sample of unstage all files git rm --cached --r .
روش برگرداندن فایل هایی که به صورت دستی، اشتباه پاک شده اند
یکی از دستورات بسیار خطرناک در گیت، استفاده از دستور git rm به همراه نقطه است که باعث حذف کلیه فایل های پروژه می شود. بنابراین سعی کنید از این دستور به اشتباه استفاده نکنید.
حال اگر بدون اینکه از دستور git rem استفاده کرده باشیم، به صورت اشتباهی تعدادی از فایل ها را به صورت دستی پاک کرده ایم، برای این کار می توانید از دستور زیر استفاده کنید. در صورتی که بین نام این فایل ها، space یا همان فاصله هم موجود باشد، از دستور بعد آن می توانید استفاده کنید.
//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 می باید استفاده کنید.
این دستور ها، از دستورات گیت هستند که بسیار پر کاربرد بوده و در زیر به تفکیک در مورد هر کدام از آن ها به صورت خلاصه توضیح داده شده است:
//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 می باشد که تفاوت بین فایل ها را به نمایش در می آورد. در شکل زیر می توانید به سادگی مفهوم روش های مورد استفاده را مشاهده نمایید.
//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 استفاده کنید.
در ادامه به نکات مربوط به این زمینه خواهیم پرداخت:
//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 //View current remotes git remote -v //The result is something like this: > origin https://github.com/OWNER/REPOSITORY.git (fetch) > origin https://github.com/OWNER/REPOSITORY.git (push) > destination https://github.com/FORKER/REPOSITORY.git (fetch) > destination https://github.com/FORKER/REPOSITORY.git (push) //Remove remote git remote rm destination //The result is something like this after checking with git remote -v: > origin https://github.com/OWNER/REPOSITORY.git (fetch) > origin https://github.com/OWNER/REPOSITORY.git (push)
ترکیب شاخه های مختلف در یک پروژه با merge و rebase
در پروژه های گروهی، عموما در بسیاری از زمان ها، branch مختلف توسعه باید باهم دیگر در پروژه اصلی ترکیب شده و ادغام گردند.
در واقع دستورهای merge و همین طور rebase این هدف را دارند که چندین branch یا شاخه مختلف را باهم ترکیب کنند. در واقع با هر دو این دستورات گیت ، می توانید شاخه های جدا را باهم ترکیب کنید.
در زیر به نکات مربوط به دستور merge و rebase خواهیم پرداخت:
//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 استفاده می شود که در ادامه به صورت کامل به حالت های مختلف آن اشاره می کنیم:
نگهداری Commit ID ها در یک فایل جداگانه برای بازگردانی مجدد آن ها
یک نکته مهم که بسیار خوب است قبل از عملیات reset آن را انجام دهید، این می باشد که پیش از reset با استفاده از دستور git log، تمامی ID های commit را در آورده و در یک فایل جداگانه ذخیره کنید.
این باعث می شود تا در صورت بروز اشتباه بتوانید به commit مورد نظر خود مراجعه کنید و آن را بازگردانی کنید.
چه زمانی از reset و چه زمانی از revert استفاده نماییم؟
انجام revert باعث می شود تا شما عملیات undo را بدون از دست دادن commit های قبلی و با اضافه کردن یک commit جدید انجام دهید.
به همین دلیل زمانی که در public branch پروژه خود هستید، بهتر است تا revert انجام دهید و زمانی هم که در private branch خود هستید، از reset استفاده کنید.
//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 اول را از دست بدهید.
در زیر به نکات مهم این دستور برای استفاده شما در پروژه ها، اشاره شده است:
//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 آشنا شوید، می توانید از مقاله استفاده کنید:
//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 آشنا شدیم و در مورد آن ها به صورت خلاصه به دستورات مورد نیاز در گیت اشاره کردیم.
ممکن است شما موارد بیشتری را بدانید که ما فراموش کرده ایم تا در این مقاله قرار دهیم.
اگر شما از این موارد آگاه هستید، حتما در بخش نظرات عنوان کنید تا آن را به مقاله “آموزش دستورات کاربردی گیت” اضافه کنیم. در ضمن اگر این مقاله را مفید دیدید، حتما آن را به دوستان خود معرفی کرده یا در شبکه های اجتماعی به اشتراک بگذارید.
راهنما برای مطالعه بیشتر:
در صورتی که نیاز به مطالعه بیشتر در مورد مقاله ” دستورات کاربردی گیت ” دارید، می توانید از لینک های زیر استفاده نمایید:
راهنما برای خواندن سایر مقالات سایت به صورت دسته بندی شده:
شما می توانید از طریق لینک های کاربردی زیر به سایر مقالات سایت که کاملا بصورت طبقه بندی شده وجود دارد، مراجعه نموده و از آن ها استفاده کنید:
عالی بود
سلام .بسیار عالی و کاربردی بود .مچکرم…یک مقاله هم در مورد کانفلیکت ها ..جلوگیری از اون تا حد امکان .و تو چه کار های نباید انجام داد که کانفلیکت داشته باشیم و رفع اون منتشر کنید خیلی عالی میشه …ممنون بابت وقت و زحمتی که برای انتشار این مقاله آموزشی کشدید.
سلام به شما دوست عزیز
بسیار ممنونم که وقت ارزشمند خودتون رو گذاشتید تا برای ما پیام ارسال کنید.
در نظر داشتیم که این مورد رو هم اضافه کنیم اما واقعا کمبود وقت بهمون اجازه نداد. حتما این رو هم در مقالات بعدی اضافه خواهیم کرد.
سپاس فراوان بابت پیام های دلگرم کننده ای که برای ما ارسال کردید.
متشکرم
عالی بود ولی قسمت stach اش گنگ بود
سلام به شما دوست عزیز
ممنون از اینکه وقت خود را گذاشتید تا برای ما پیام ارسال کنید.
حتما سعی می کنیم در مقاله های آینده، یک مقاله مفصل و کامل در مورد آن در سایت قرار دهیم.
سپاسگزارم
سلام
من خیلی اتفاقی از گوگل اومدم
با اجازتون من اینجا برای دوستمم فرستادم تا بیاد ببینه
ممنون
سلام
ممنونم، امیدوارم که دستورات گیت داده شده در این بخش مورد استفاده شما و دوست شما قرار گرفته باشه.
در صورتی که می خواهید از سایر آموزش های PHP ما استفاده کنید، می توانید از لینک زیر استفاده نمایید:
لینک آموزش رایگان php