Skip to content

saed-gpr/git-tutorial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 

Repository files navigation

آموزش Git

چیز هایی که توی این مطلب گفتیم:

تعاریف

قبل از هرچیزی، بهتره که یسری از اسم هایی که خیلی مهم هستن رو براتون تعریف کنم و هرکدوم رو خیلی آسون توضیح بدم.

1 - تعریف repository : مجموعه ای از کامیت هاست.

2 - تعریف staging area : جایگاه تغییرات اعمال نشده.

3 - تعریف working tree : خود همون پروژه ای که داریم روش کار میکنیم.

4 - تعریف commit : وقتی یک تغییری روی پروژه مون اعمال میکنیم، یک پیامی برای این تغییر مینویسیم، این پیام commit نام دارد.

5 - تعریف branch : یک شاخه ای از ریپازیتوری.

6 - تعریف tag : اسمی هست که به یک commit میدهیم

اگه تا الآن براتون گنگ و گیج کننده بود، اشکالی نداره و کاملا طبعیه، جلوتر بیشتر این مطالب براتون جا میوفته!

اسم های خاص

تعریف master : برنچ اصلی یک ریپوزیتوری master است

تعریف HEAD : آخرین کامنت

تعریف origin : یه موقعی هست که ما یک ریپوزیتوری رو از اینترنت خوشمون میاد و اونو clone میکنیم، به جایی که ازش این ریپوزیتوری رو clone کردیم origin میگن! (اگه مفهوم clon رو نمیدونید نگران نباشید، جلوتر بهش میپردازیم)

ایجاد یک repository

در لینوکس ابتدا به Desktop میریم و با استفاده از دستور mkdir یک دایرکتوری ای درست میکنیم

سپس با دستور cd به داخل دایرکتوری رفته و دستور git init رو وارد میکنیم تا پوشه مورد نظر تبدیل به یک repository شود.

در همین شرایط یک فایلی تحت عنوان git. دیده میشود که در ادامه به آن میپردازیم.

نحوه clone کردن یک repository

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

برای clone کردن یک ریپازیتوری از دستور git clone + link استفاده میکنیم.

git clone [email protected]:saed-gpr/linux.git

میتونیم هم لینک https و هم لینک ssh رو وارد کنیم.

در بعضی از شرایط، ما فقط یک بخشی از یک repository را میخواهیم داشته باشیم. برای اینکه فقط یک شاخه از یک repositoyr رو دانلود کنیم، از دستور زیر استفاده میکنیم:

git clone --master [email protected]:saed-gpr/linux.git

در این مثال آورده شده، ما برنج master از این پروژه را clone کردیم (شما الآن با مفهوم clone آشنا هستید)

فایل .git

بعد از انجام مراحل قبل، یک دایرکتوری پنهان به اسم git. تشکیل میشود. اما کارایی این دایرکتوری چیه؟

دایرکتوری git. درواقع یک مخزن برای ذخیره سازی یک سری از اطلاعات مانند netadata ها، تاریخچه ها و configuration ها میباشد.

تنظیمات Git و دستور git config

توی دنیای Git برای اینکه نشون بدیم که یک تغییر یا commit توسط ما نوشته شده است، باید یک سری چیز ها رو مثه user name و user email رو مشخص کنیم.

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

git config --global user.name "saed-gpr"

برای ست کردن username

git config --global user.email "[email protected]"

برای ست کردن email

ذخیره تغییرات

تغییرات git
عکس مربوط به ذخیرات در Git

با توجه به المان هایی که در تصویر مشاهده میشود، ما در پروژه هامون سه حالت داریم :

1 - حالت Untracked : شما یک شرایطی را درنظر داشته باشید که یک فایل به پروژه مان اضافه نشده، به این حالت Untracked میگویند. که میتوانیم با دستور git add آن را به Staging Area انتقال بدهیم.

2 - حالت Unmodified یا Staging Area : حالتی است که فایل ها نه ادیت شدن و نه حذف یا اضافه.

3 - حالت modified : اگر ما یک بخشی از فایل را (مثلا یک خط) تغییر بدهیم، درواقع فایل به حالت modified در اومده و مثه حالت اول میتونی با استفاده از دستوری git add به حالت Staging Area منتقلش کنیم. (بعدا بیشتر درمورد دستور git add صحبت میکنیم!)

4 - حالت Local Repository : بعد از تغییراتی که اعمال کردیم (اضافه/حذف فایل یا تغییرات کوچیک در محتوای فایل) و اجرا دستور git add حالا نوبت commit کردن میباشد! (دیگه الآن میدونیم commit چیه!)

git add file.txt
git commit -m "this is the massage"

دستور git status

با استفاده از این دستور، میتونید وضعیت پروژه تونو ببینید. اینکه ایا untracked هست یا نه یا توی چه مرحله ای قرار داره. (الان دیگه مفهوم untracked رو staging area رو میدونید)

دستور git add و git commit

همونطور که پیشتر دیدید، دستور git add دستوری است که فایل رو به حالت Staging Area منتقل میکنه(آماده ی commit کردن میکنه) و میتونیم با استفاده از دستور git commit اون تغییرات رو ذخیره کنیم.

ساز و کار دستور git commit :

وقتی شما یک تغییری رو روی فایل یا پروژه اعمال کردید، برای ذخیره شدن این تغییر از این دستور استفاده میکنیم. اما این دستور دارای المان m- میباشد که این امکان رو به ما میده که برای هر تغییراتی یک پیامی بذاریم.(پیام ها داخل دابل کوتیشن " " قرار میگیرند)

فرض کنید که پروژه شما با یک باگی روبرو شده است و شما و تعدادی از همکارانتان درحال تلاش برای رفع این باگ هستید که بلخره شما این باگ رو برطرف میکنید. برای اینکه دیگر همکاران شما متوجه این بشوند که باگ برطرف شده، نیازه که شما یک پیامی رو ذخیره سازی کنید. حالا با در نظر گرفتن این سناریو دستور به صورت زیر میشود

git commit -m "The bug has been fixed"

در اینجا قسمت "The bug has been fixed" مربوط به همون پیام میباشد. شما باتوجه به کاری که کردید، میتونید این پیام رو بنویسید.

دستور git diff

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

ساز و کار دستور git diff

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

روش اول :

git diff

روش دوم :

git diff HEAD

الآن ما میدونیم منظور از HEAD چیه !

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

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

git diff HEAD^

ولی اگه بخواهیم تقاوت رو نسبت به کامیت های خیلی قبل تر (3 یا 4 تا) به صورت زیر دستور را وارد میکنیم.

git diff HEAD~3
git diff HEAD~4

همچنین میتونیم این تفاوت ها رو در یک فایل مشخص به نمایش در بیاریم.

git diff HEAD~5 main.txt

با توجه به این دستور، ما تفاوت کامیت HEAD رو با 5 تا کامیت قبلی مخصوص فایل main.txt را به نمایش در اوردیم.

دستور git log

برای نشون دادن لاگ تغییرات با توجه به commit ها.

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

1 - به صورت git log : لاگ ها رو تمام و کمال نشون میده

2 - به صورت git log --oneline : لاگ ها رو به صورت خلاصه نشون میده

درواقع وقتی که یک پروژه خیلی بزرگ به همراه تعداد خیلی زیادی commit داری، بهتره از این دستور استفاده کنی !

دستور git blame

این دستور تغییرات یک فایل خاص رو با جزئیات بررسی میکند. فرم کلی این دستور هم به صورت git blame + file name میباشد.

به عنوان مثال، یک فایلی در پروژه ما وجود داره که اسمش main.txt هست و میخواهیم تغییرات این فایل رو در طول زمان به همراه نام نویسنده اش را ببینیم. به صورت زیر عمل میکنیم :

git balme main.txt

دستور git tag

این دستور باعث میشه که commit های پروژه مونو راحت تر بخونیم.

روش استفاده :

git tag "V1.0"

برای دیدن همه تگ ها :

git tag

همجنین میتونیم برای یک کامیت خاصی در پروژه، tag اضافه کنیم

git tag "V0.8" 20eb643

در واقع 20eb643 به یک کامیت مشخص در پروژه مون اشاره میکنه و میتونه هرچی باشه.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published