آشنایی با دستورهای گیت (قسمت دوم)

img
img
img
img
shape
shape
blog-details
02
فروردین
آشنایی با دستورهای گیت (قسمت دوم)
نویسنده : محمدرضا لیایی
دسته بندی : آموزش گیت کنترلر
زمان مطالعه : 10 دقیقه

در قسمت قبل دستورات init، status،  add و commit را مورد بررسی قرار دادیم. در این قسمت قصد داریم تا موارد دیگری از دستورهای گیت را با شما مطرح کنیم و با این نرم افزار کاربردی بیشتر آشنا شویم.

 

نکته: ممکن است در این سری آموزش ها به مفهومی به نام درخت کاری برخورد کنید. درخت کاری گیت منظور همان سه حالت مختلف موجود در گیت است. یکی مرحله مخزن اولیه به عنوان برگ این درخت شناخته می شود. یکی به عنوان stage که به عنوان شاخه این درخت کاری شناخته می شود. یکی مرحله commit است که به عنوان تنه این درخت شناخته می شود. در پروژه های گیت که تعداد نفرات زیادی بر روی پروژه کار می کنند تعداد برگ ها و شاخه ها فوق العاده زیاد می شود. تمامی این برگ ها و شاخه ها در تنه ی commit به هم متصل می شوند.

 پاک کردن فایل از مرحله stage گیت

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

$ git rm --cached

خود گیت نیز این پیشنهاد را به ما داده است. اگر شما دستور git status را در پروژه ای که در جلسه قبل ایجاد کردیم وارد کنید خروجی مثل زیر را در درون خط فرمان خود مشاهده می کنید.

$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   index.html
        new file:   style.css

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

$ git rm --cached -r .

مشاهده تغییرات در گیت

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

 

نکته: در اینجا بر روی فایل های پروژه جلسه قبل کار می کنیم. در جلسه قبل پروژه ای ساده با دو فایل style و index ساختیم. در این قسمت بر روی ادامه آن پروژه کار می کنیم.

 

در حال حاضر اگر یک git status از فولدر بالا تهیه کنیم خروجی به صورت زیر است. 

$ git status
On branch master
nothing to commit, working tree clean

درخت کاری گیت در اینجا مقدار خالی را نشان می دهد. می خواهیم تغییرات کوچکی بر روی فایل index.html داشته باشیم. تغییرات ایجاد شده در فایل index.html افزودن تگ h1 شامل asascript است.

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>salam</title>
</head>
<body>
    <h1>asascript</h1>
</body>
</html>

بعد از انجام این تغییرات یک بار دیگر git status می گیریم.

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   index.html

no changes added to commit (use "git add" and/or "git commit -a")

همانطور که مشاهده می کنید فایل index.html دچار تغییر و تحولاتی شده است.

حالا این تغییرات را می توانید به صورت جزئی با استفاده از دستور زیر مشاهده کنید.

$ git diff

خروجی این دستور به صورت زیر است.

diff --git a/index.html b/index.html
index 5fa8976..7f5043c 100644
--- a/index.html
+++ b/index.html
@@ -8,6 +8,6 @@
     <title>salam</title>
 </head>
 <body>
-
+    <h1>asascript</h1>
 </body>
 </html>
\ No newline at end of file

نرم افزار گیت برای سادگی کار، موارد پاک شده را با خط قرمز و یک علامت منفی در کنار آن ها مشخص می کند و موارد اضافه شده را به رنگ سبز با یک علامت مثبت در کنار آن به نمایش در می آورد. در این جا ما یک تگ h1 به index.html اضافه کردیم که در قسمت بالا به خوبی قابل مشاهده است.

 

نکته: با کوچکترین تغییر در درون یک خط از کد ها گیت آن خط را پاک شده فرض می کند و تغییرات را به صورت یک خط جدید در command line به نمایش در می آورد.

 

نکته: بعضی از code editor ها به صورت پیشفرض افزونه های استفاده از git را در درون خودشان دارند و شما با استفاده از این افزونه ها به سادگی می توایند تغییرات در هر فایل را مشاهده کنید. در انتهای این دوره در دو جلسه مجزا آموزش استفاده از git در درون phpstorm و visual studio code را مورد بررسی قرار می دهیم.

 مشاهده commit ها در درون گیت

برای مشاهده توضیحاتی که در درون commit یک پروژه قرار گرفته اند می توانید از دستور زیر استفاده کنید. 

با وارد کردن این دستور در پروژه خودمان داریم:

$ git log
commit 26c3027ab5299833f7963a18fa5e7130c54ff91f (HEAD -> master)
Author: asa.web.script@gmail.com <asa.web.script@gmail.com>
Date:   Mon Mar 22 11:57:16 2021 +0430

    First step of project
 

نکته: برای هر commit در درون گیت یک ID یکتا وجود دارد. در خروجی های فوق همانطور که مشاهده می کنید در خط دوم یک unique id برای commit “first step of project” در نظر گرفته شده است. همچنین در خطوط بعدی ایمیل ثبت کننده و تاریخ ثبت درج شده است.

 با بزرگ شدن پروژه شما دریافت و مرتب سازی فایل های commit شده بسیار مشکل می شود. برای مدیریت log های کامیت دستور های بسیار زیادی موجود است. برای بررسی و دسترسی به این دستورات command زیر را در خط فرمان خود وارد نمائید. بعد از وارد کردن این دستور سایت گیت در درون مرورگر شما باز می شود.

در ادامه بعضی از آپشن های جانبی این دستور را مورد بررسی قرار می دهیم.

$ git log --oneline
26c3027 (HEAD -> master) First step of project

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

$ git log -p
commit 26c3027ab5299833f7963a18fa5e7130c54ff91f (HEAD -> master)
Author: asa.web.script@gmail.com <asa.web.script@gmail.com>
Date:   Mon Mar 22 11:57:16 2021 +0430

    hello to every one

diff --git a/index.html b/index.html
new file mode 100644
index 0000000..5fa8976
--- /dev/null
+++ b/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport"
+          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>salam</title>
+</head>
+<body>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..e69de29

با استفاده از دستور git log –p می توانید تغییرات اعمال شده در درون commit را مشاهده کنید.

 

نکته: از آنجائی که خروجی های این دستور می تواند بسیار طولانی باشد برای جا به جا شدن بین صفحات می توانید از arrow keys روی کیبورد، صفحه را بالا و پائین کنید تا بتوانید تمامی تغییرات بر روی commit ها را مشاهده کنید و در انتها برای خارج شدن بر روی دکمه q کلیک کنید.

 جمع بندی

در این جلسه دستورات دیگری از گیت را مرور کردیم با استفاده از این دستورات توانستیم مدیریت بهتری بر روی پروژه گیت خودمان داشته باشیم. دستورهای diff و log را به صورت مبسوط مورد بررسی قرار دادیم و همچنین در بعضی از موارد option های کاربردی آن ها را دوره کردیم.

لیست قسمت های این دوره:
رایگان 20 دقیقه
رایگان 30 دقیقه
رایگان 35 دقیقه
رایگان 15 دقیقه
رایگان 5 دقیقه