رفتن به مطلب
بازگشایی انجمن! ×
GuardIran

Goodzilam

پست های پیشنهاد شده

درود
در این تاپیک آموزش نصب گیت (Git) و استفاده از اون در سطح مبتدی قرار خواهد گرفت !

لطفا درصورت مشاهده هرگونه ایراد و سوال به بنده در خصوصی اطلاع بدید ❤️

 

 

منابع:

This is the hidden content, please
 

This is the hidden content, please

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


گیت چیست ؟

 

نویسندۀ و خالق اصلی گیت لینوس توروالدز (همچنین سازندۀ کرنل لینوکس) هست

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

نصب گیت !

ابتدا این

This is the hidden content, please
 را باز کنید و با توجه به سیستم عامل خود گیت رو از بخش زیر دانلود کنید !

spacer.png

This is the hidden content, please

فایل دانلود شده را اجرا کنید و مراحل نصب را طبق عکس های زیر سپری کنید !

ممکن است به دلیل تفاوت ورژن در نسخه هایه اینده این مراحل کمی دچار تفییر بشوند

This is the hidden content, please
/applications/core/interface/js/spacer.png">

در بخش آخر پیشنهاد می‌شود مطابق عکس موارد را انتخاب کنید. توضیحات هرکدام:

  • گزینه Additional icons بر روی صفحه دسکتاپ شما یک میانبر می سازد.
  • گزینه Windows Explorer integration به شما این امکان را می‌دهد تا با کلیک راست بتوانید Git را در مسیر جاری اجرا کنید. Git Bash محیط تحت خط‌ فرمان و Git GUI محیط گرافیکی می‌باشد.
  • گزینه Git LFS یا Large File Support برای کار کردن با فایل های حجیم طراحی شده است و از دانلود چندباره آن ها با جایگزینی پوینتر جلوگیری می‌کند.
  • گزینه Associate .git* configuration files with the default text editor قابلیت شناسایی پسوند git و باز کردن آن با ویرایشگر پیش فرض (مانند VSCode) را به سیستم عامل شناسایی می‌کند. تنظیمات این گزینه جلوتر توضیح داده خواهد شد.
  • گزینه Associate .sh files to be run with Bash قابلیت شناسایی پسوند sh (اسکریپت Unix Shell) با محیط خط فرمان Bash را به سیستم عامل شناسایی می‌کند. اگر مایل هستید از خط فرمان های Bash دیگری مانند Cygwin به جای MSYS تعبیه شده استفاده کنید این گزینه را انتخاب نکنید.
  • گزینه Use a TrueType font in all console windows پشتیبانی بهتر از کاراکتر های Unicode در محیط خط فرمان را فراهم می‌کند. استفاده از این قابلیت لزومی ندارد.
  • گزینه Check daily for Git for Windows updates بطور روزانه بروزرسانی های گیت را اعلام می‌کند.

This is the hidden content, please
/applications/core/interface/js/spacer.png">

در بخش آخر ویرایشگر برای Git انتخاب می‌شود.

همانطور که مشاهده می‌کنید انتخاب پیش فرض Vim می‌باشد. Vim یک ویرایشگر بسیار محبوب در ترمینال است اما برای افرادی که تجربه کار با آن را ندارند، پیشنهاد نمی‌شود.

و به همین دلیل ما از ویرایشگر VSCode (

This is the hidden content, please
) استفاده میکنیم !

spacer.png

پس مطابق تصویر Use Visual Studio Code as Git's default editor را انتخاب و سپس بر روی Next کلیک کنید.

اگر مراحل نصب VSCode را در هین نصب گیت انجام داده‌اید باید Git Setup را کاملا ببندید و مراحل نصب را از ابتدا تکرار کنید.

در صورت نیاز، ویراشگر پیش فرض از طریق خط فرمان قابل تغییر است.

spacer.png

  • گزینه Use Git from Git Bash Only: تغییری در آدرس PATH ایجاد نخواهد شد و ابزار git تنها از طریق Git Bash قابل دسترس خواهد بود.
  • گزینه Git from the command line and also from 3rd-party software: دسترسی به git از هر برنامه سیستم عامل علاوه بر Git Bash فراهم خواهد شد.
  • گزینه Use Git and optional Unix tools from the Command Prompt: تمام ابزار Unix و دستورات git از خط فرمان ویندوز قابل دسترس بوده و جایگزین ابزار های سیستم عامل خواهند شد.

This is the hidden content, please
/applications/core/interface/js/spacer.png">

در بخش آخر نوبت به انتخاب ترمینال یا خط فرمان می‌رسد.

گزینه اول برای اجرای Git Bash به همراه یک ترمینال شبیه سازی شده یونیکس (MinGW) و گزینه دوم خط فرمان ویندوز (cmd) است.

استفاده از گزینه دوم مخصوصا در نسخه های قدیمی‌تر ویندوز توصیه نمی‌شود.

پس گزینه Use MinTTY را انتخاب کنید.

This is the hidden content, please
/applications/core/interface/js/spacer.png">

Install رو کلیک کنید و صبر کنید تا نصب به پایان برسد.
گیت رو با موفقیت نصب کردید !

بخش اول

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


مقدمه

 

طبق گفته های قبلی گیت یک سیستم کنترل نسخه (Version Control) هست !

به این معنا که یکی از ویژگی های گیت، جلوگیری از پیش اومدن همچین صحنۀ آشنایی هست:

spacer.png

* توجه داشته باشید که محدودۀ کاربران گیت فقط به برنامه نویسان و شاخه تکنولوژی محدود نمیشه! *

یکی از ویژگی بسیار مهم گیت امکان کار گروهی می‌باشد، می‌توانید ببینید چه تغییراتی توسط چه شخصی و در چه زمانی صورت گرفته است.

کنترل های نسخه دو دسته هستند: متمرکز و توزیع شده. در نوع متمرکز فایل های پروژه و تاریخچه آن بر روی سرور مرکزی نگهداری شده و سیستم ها با اتصال به سرور به داده ها دسترسی پیدا می‌کنند.

ایراد اصلی این نوع کنترل نسخه غیر قابل اعتماد بودن آن است زیرا در صورت اختلال در اتصال به سرور یا قطعی سرور مرکزی، تاریخچه و دیگر ویژگی های کنترل نسخه از دسترس خارج خواهد شد.

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

با این توضیحات، گیت یک سیستم کنترل نسخه توزیع شده است؛

که از ویژگی های آن می‌توان به موارد زیر اشاره کرد:

  • سریع و کم حجم
  • شاخه بندی
  • تاریخچه عملیات
  • بازگردانی تغییرات
  • مقایسه تغییرات

بخش دوم

مباحث این مطلب در محیط خط فرمان Git Bash توضیح داده شده‌اند اما در نرم افزار های دیگر هم قابل استفاده هستند.

 

در منؤ استارت عبارت Git Bash رو تایپ کنید و برنامه رو اجرا کنید

در محیط ترمینال ابتدا به تغییر کانفیگ میپردازیم، با دستور زیر نام کاربری خود را تعریف کنید:

This is the hidden content, please

و با دستور زیر ایمیل:

This is the hidden content, please

 

 حالا ما اماده ساخت اولین پروژه یا اصطلاحا ریپو (ابتدای کلمه Repository) هستیم !

ترمینال رو به فولدر مورد نظر برای ایجاد پروژه هدایت کنید

و با دستور زیر یک ریپو ایجاد کنید:

This is the hidden content, please

Capture.JPG

با دستور بالا یک پوشه مخفی git درون دایکرتوری فعلی ایجاد می‌کند و از این پس دایرکتوری را تحت مدیریت گیت قرار میده !

 

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

با دستور زیر یک فایل تکست با محتویات Hello World در ریپازیتوریمون ایجاد میکنیم:

This is the hidden content, please

 

اتفاقی که رخ میده، گیت متوجه یک فایل جدید میشود !

با دستور زیر میتوانید از وضعیت فعلی ریپو خبردار شوید (در اینده خیلی این دستور رو تکرار میکنید) :

This is the hidden content, please

Capture.JPG

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

همونطور که مشاهده میکنید فایل ایجاد شده رو Untracked مشخص کرده، به این معنا که گیت هیچ تعاملی با آن ها ندارد.

به متن قرمز رنگ دقت کنید، اسامی فایل های Untracked در اینجا نمایان می‌شوند. قبل از ثبت شدن فایل ها به تاریخچه گیت، فایل ها باید آماده ثبت شوند که به آن Stage کردن می‌گویند

با دستور زیر میتوانید فایل ها را به مرحله Stage ببرید:

This is the hidden content, please

 

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

پس با دستور زیر فایل رو از مرحله استیج به کامیت میبریم:

This is the hidden content, please

 

اولین کامیت به گیت ارسال شده است و در آینده می‌توان وضعیت فایل را به وضعیت کامیت های ثبت شده بازگرداند.

این نکته را هم به یاد داشته باشید که مرسوم است متن اولین کامیت "Initial commit" ثبت شود.

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

This is the hidden content, please

دستور log اطلاعاتی همچون مشخصه کامیت به همراه شاخه متعلق به آن، نام و آدرس ایمیل فرد ثبت کننده، تاریخ دقیق و جزئیات کامیت را چاپ می‌کند. مشخصه های کامیت با الگوریتم رمزنگاری SHA-1 تولید و Hash می‌شوند.

Capture.JPG

 

خلاصه این بخش

  • گیت برای مدیریت نسخه های یک پروژه و ساده سازی امکان همکاری چندین نفر بر روی پروژه است.
  • برای ساخت یک پروژه (ریپو یا ریپازیتوری) از دستور git init استفاده میکنیم.
  • برای مشاهده تغییرات در ریپو از دستور git status استفاده میکنیم.

مراحل ثبت تغییرات جدید (حذف، افزودن و یا تغییر فایل) در ریپوی لوکال:

  1. استیج کردن فایل یا فایل ها با git add
  2. کامیت کردن تغییرات با git commit
لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


بخش سوم

در این بخش به نحوه حذف کردن و برگرداندن تغیرات اعمال شده میپردازم!

تا به اینجا، فایلی ایجاد کردیم به اسم HW.txt سپس فایل رو به مرحله استیج بردیم و در نهایت کامیت کردیم.

 

تغییر

به محتویات فایل HW.txt که  شامل "Hello World" بود "!!!" را اضافه کردیم

و سپس تغییرات اعمال شده را استیچ و کامیت کردیم

 

Capture.JPG

با دستور git log میتونید تغییرات اعمال شده در پروژه رو مشاهده کنید

Capture.JPG

اولین کامیت مربوط به ایجاد فایل HW.txt و دومین کامیت مربوط ادیت کردن HW.txt هست!

 

Capture.JPG

به عکس بالا دقت کنید، هر کامیت با یک هش (مثال بالا: 67b8be309899981bd91e4720ed7ec1a96c8d04b3 )مشخص میشود.

در انتها آخرین کامیت عبارت "HEAD -> master" مشاهده میکنید، کلمه HEAD به اخرین کامیت اعمال شده اشاره دارد و کلمه master به برنچ (Branch, در ادامه توضیح خواهیم داد) اشاره میکند !

همونطور که میدونید گیت برای مدیریت نسخه هست :) و امکان مشاهده تغییرات در هر کامیت و برگشت به اون ورژن رو میدهد !

برگردیم به مثال بالا، میخوایم به ورژنی از پروژه بریم که فایل HW.txt حاوی "!!!" نبود.

از انجایی که در اخرین کامیت ما فایل HW.txt ادیت کردیم، میدانیم که در کامیت یکی مانده به اخر "!!!" وجود ندارد

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

This is the hidden content, please

 

اما اگر ورژن مورد نیاز ما دقیقا یکی مانده به اخر نباشه چی ؟

همونطور که گفتم هر کامیت با هش مخصوصی مشخص میشود، پس بجای HEAD~1 (کامیت قبل از HEAD) قسمت اولیه از هش کامیت (یا کل هش) رو قرار میدیم !

This is the hidden content, please

 

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

This is the hidden content, please

 

آن استیج و کامیت

حالا فرض کنید که به اشتباه فایلی ناخواسته رو استیج کردید!

برای خارج کردن فایلی از حالت استیج دستور زیر رو اجرا کنید:

This is the hidden content, please

Capture.JPG

همونطور که میبینید فایلی که حاوی پسورد بوده رو به اشتباه استیچ کردیم و با دستور ذکر شده از حالت استیج خارج کردیم.

 

اما اگر نتنها فایل رو استیج بلکه کامیت هم میکردیم چه ؟

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

This is the hidden content, please

 

خلاصه این بخش

  • رفت امد بین ورژن ها با دستور git checkout hash
  • خارج کردن فایل از حالت استیج با دستور git restore --sateged
  • حذف کامیت انجام شده با دستور git reset
لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


بخش چهارم

 

فایل README.md چیست ؟

README یک فایل تکست است (از برخی تگ های HTML پشتیبانی میکند) و به خواننده پروژه را معرفی و توضیح میدهد !

معمولا این فایل حاوی پیشنیازها و نحوه نصب است.

مثال یک README.md جامع در این

This is the hidden content, please

 

دستور Diff

دستور diff تغییرات اعمال شده در یک فایل را مشخص میکند! (خط های پاک شده, ادیت شده و اضافه شده)

در ریپوی موجودمون فایلی به اسم README.md ایجاد میکنیم

This is the hidden content, please

و آدرس این تاپیک را در اخر فایل README.md اضافه میکنیم.

This is the hidden content, please

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

This is the hidden content, please

تغییرات قبل و بعد توسط - + نمایش داده می‌شود.

دقت کنید تغییرات README.md در Stage قرار نگرفته‌اند.

 

پس از اضافه کردن فایل به Stage اگر از دستور git diff استفاده کنیم خروجی نمایش داده نمیشود !

باید برای مشاهده جزئیات تغییرات فایل های Stage شده از دستور زیر استفاده می کنیم:

This is the hidden content, please

خلاصه این بخش

  • README.md فایلی است که توضیحات جامعی درباره ریپو به کاربران میدهد
  • مشاهده تغییرات اعمال شده قبل از استیج با دستور git diff
  • مشاهده تغییرات اعمال شده بعد از استیج با دستور git diff --staged
لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


بخش پنجم

در این بخش به ‌Branch میپردازیم.

 

- شاخه (Branch)

در ابتدای ساخت یک ریپو ما در شاخه master قرار داریم, از فواید ساخته برنچ میتوان به:

۱. ایجاد محیطی برای همکاری دو برنامه نویس (بطور مثال)

۲. محلی برای توسعه ورژن های بعدی پروژه 

۳. رفع مشکل (Issue) یا ایجاد قابلیت های جدید به یک ریپو (با ایجاد pull request, برنچ رو با برنچ master ادغام میکنیم)

و ...

 

شاخه ها مانند دو جهان موازی در کنار هم وجود دارند اما سرانجام باید به شاخه اصلی یعنی master ختم شوند.

برای اعمال تغییرات شاخه جدید در master باید عمل ادغام (merge) صورت گیرد.

 تغییرات اعمال شده بر روی branch قرار دارند و مستقیما قابل دستیابی هستند.

برای ساخت برنچ از دستور زیر استفاده میکنیم:

This is the hidden content, please

و برای پاک کردن یک برنچ:

This is the hidden content, please

فرض کنید ورژن دوم برنامه ما در برنچ جدیدمان اماده هست, حالا نوبت ادغام (merge) کردن برنچ جدیدمون با مستر است!

This is the hidden content, please

توجه داشته باشید در ریپویی که دسترسی اعمال تغییرات ندارید,نیاز به ایجاد Pull Request دارید

ساده تر توضیح بدم با اینکار از صاحب ریپو درخواست میکنید تا برنچ شما رو با برنچ دیگری ادغام کنه 

- Conflict

قطعا در آینده نزدیک با مشکل رایجی به نام Conflict برخورد خواهید کرد.

این اتفاق زمانی رخ می‌دهد که محتوای فایل در شاخه های مختلف احتمال جایگزینی و از بین رفتن محتویات فعلی شوند.

spacer.png

اما رفع این خطا به عهده شماست و باید یکی از  محتویات یا هردو را پاک کنید.

 

خلاصه این بخش

  • برنچ ها شاخه هایی از مسیر اصلی پروژه ما هستند که هرزمان درصورت نیاز با مسیر اصلی ادغام میشوند
  • ساخت برنچ یا شاخه جدید با دستور git branch
  • ادغام برنچ با دستور git merge
  • کانفلیکت یا تداخل مشکلی رایج هست که با ادیت کردن فایل ذکر شده برطرف میشود
لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • ایجاد مورد جدید...