آموزش Git – راهنمای جامع مبتدیان

52
0
آموزش Git

Git یکی از پرکاربردترین ابزارهای DevOps برای مدیریت پروژه های مشارکتی در مقیاس های مختلف است. این سیستم کنترل نسخه به شما این امکان را می دهد که از تاریخچه پروژه خود مطلع باشید. همچنین به اعضای تیم اجازه می دهد تا بر روی بخش های مختلف یک پروژه به طور کارآمد و موثر کار کنند. آموزش Git را در ادامه بخوانید.

با این حال، اگر در Git تازه کار هستید، کنترل دستورات مختلف Git می تواند چالش برانگیز باشد. همچنین در مورد مزایا و معایب Git صحبت خواهیم کرد.

Git چیست و چگونه کار می کند؟

ردیاب اطلاعات جهانی (Git) یک سیستم کنترل نسخه منبع باز (VCS) برای ردیابی تغییرات در هر مجموعه ای از فایل ها است. در ابتدا برای توسعه هسته لینوکس طراحی و توسعه داده شد، اما اکنون به طور گسترده برای هماهنگی کار بر روی پروژه های مشترک مانند توسعه نرم افزار استفاده می شود.

Git به کاربران امکان می دهد توسعه غیرخطی داشته باشند. پایگاه داده یک پروژه Git در یک مخزن راه دور که بر روی پلتفرمی مانند GitHub یا GitLab میزبانی می شود، ذخیره می شود و به چندین نفر اجازه می دهد تا به طور همزمان روی بخش های مختلف یک پروژه کار کنند. این منجر به بهبود یکپارچگی داده ها و سرعت توسعه می شود.

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

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

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

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

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

. بررسی کنید – انتخاب کنید که کدام خط توسعه را می خواهید تغییرات خود را اعمال کنید. بررسی یک شعبه باعث می شود Git commit های جدیدی را در آن شاخه ثبت کند.

. Clone – یک کپی محلی از یک مخزن موجود ایجاد کنید.

. تعهد – تغییراتی را که ایجاد کرده اید ذخیره کنید. دستور commit همچنین به عکس فوری مخزن شما در زمان commit اشاره دارد.

. مخزن Git – همچنین به عنوان repo شناخته می شود، یک پوشه .git در داخل یک پروژه است که تمام commit ها در آن قرار دارند. تمام تغییرات ایجاد شده در فایل های پروژه Git را ردیابی و ذخیره می کند. توجه داشته باشید که فایل های موجود در مخزن آنهایی هستند که Git آنها را تشخیص می دهد.

. HEAD – اشاره گر که به آخرین دستور commit در شاخه ای که در حال حاضر بررسی شده است اشاره دارد. آن را به عنوان شاخه فعلی در نظر بگیرید.

. مخزن محلی – یک کپی از یک مخزن ذخیره شده در رایانه شما.

. کش – تغییرات را از یک مخزن راه دور به یک ماشین محلی کپی کنید.

. فشار – تغییرات را از یک ماشین محلی به یک مخزن راه دور کپی کنید.

. ناحیه مرحله بندی – که به آن شاخص نیز می گویند، اینجا جایی است که کاربران فایل ها را برای کامیت بعدی سازماندهی می کنند. به Git اطلاع می دهد که چه چیزی بین commit فعلی و بعدی تغییر می کند.

. URL – محل مخزن Git.

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

آموزش Git
آموزش Git

در گردش کار اصلی Git سه مرحله وجود دارد:

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

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

زمانی که توسعه به نقطه عطفی رسید، با ادغام شاخه مرحله‌بندی با شاخه اصلی، تغییرات محلی را به طور دائم در مخزن اصلی Git انجام دهید. تمام عکس های فوری نسخه های پروژه را ذخیره می کند.

توجه داشته باشید که Git همه فایل‌های اصلاح‌شده را ردیابی نمی‌کند، زیرا فقط در صورت وجود فایل در commit شما در ناحیه مرحله‌بندی وجود دارد.

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

چرا از Git استفاده کنیم؟

بیایید به مزایا و معایب استفاده از Git برای مدیریت پروژه های خود بپردازیم.

مزایای استفاده از Git

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

. سریع و سبک – بخش اصلی Git و بیشتر عملیات آن به صورت محلی نوشته و انجام می‌شود، که آن را سریع‌تر از سیستم کنترل نسخه متمرکز می‌کند.

. قدرت سخت‌افزاری متوسط ​​– Git به سخت‌افزار قدرتمندی نیاز ندارد، زیرا اعضای تیم تنها زمانی که تغییرات را در مخزن اصلی فشار می‌دهند یا اعمال می‌کنند، باید با سرور تعامل داشته باشند. همچنین برای تیم‌های در حال رشد مفید است، زیرا Git بدون توجه به اینکه چند نفر از آن استفاده می‌کنند، نیازهای سخت‌افزار بیشتری را درخواست نمی‌کند.

. محیط امن – از SHA1، یک تابع هش رمزنگاری، برای شناسایی اشیاء در پایگاه داده خود استفاده می کند. در حین عملیات پرداخت، هر فایل را بررسی می کند و commit می کند، بنابراین تغییر داده ها در پایگاه داده بدون ذخیره سازی Git امکان پذیر نیست.

. پشتیبان‌گیری امن‌تر – Git چندین نسخه از داده‌های شما را ایجاد می‌کند، زیرا مخزن را برای همه مشتریان منعکس می‌کند و امکان پشتیبان‌گیری بیشتر را فراهم می‌کند. علاوه بر این، Git می‌تواند عکس‌های فوری بگیرد، که نمایش‌دهنده‌ی یک فایل سیستم هستند و به شما امکان می‌دهند به حالتی که عکس فوری گرفته شده است، برگردید. این می تواند یک راه حل مارکتینگ مفید در صورت شکست باشد.

. انشعاب آسان‌تر – ایجاد، حذف و ادغام شاخه‌ها تنها چند ثانیه طول می‌کشد، که باعث می‌شود نسبت به یک سیستم کنترل نسخه متمرکز، کارآمدتر و کمتر پیچیده‌تر شود.

معایب استفاده از Git

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

. مدیریت ضعیف فایل های باینری – Git هنگام مدیریت فایل های باینری مانند تصاویر کند می شود.

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

. بدون کنترل دسترسی داخلی – کاربران معمولاً از کلیدهای SSH برای محدود کردن دسترسی به سرور Git استفاده می کنند. با این حال، پلتفرم های شناخته شده مانند GitHub و GitLab مکانیسم مجوز خاص خود را دارند.

نحوه نصب Git در لینوکس، مک و ویندوز

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

نصب Git در لینوکس

اگر از لینوکس استفاده می کنید، باید دو کار را انجام دهید – نصب و پیکربندی Git در رایانه خود.

همچنین باید به چند پیش نیاز مانند ورود به لینوکس به عنوان روت یا به عنوان کاربر با امتیازات sudo توجه کنید.

نصب Git در مک

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

ابتدا از دستور زیر استفاده کنید تا بررسی کنید که آیا دستگاه شما قبلاً Git را نصب کرده است یا خیر:

git --version

اگر Git را روی مک خود نصب نکرده باشید، ترمینال این پیام را نشان می دهد:

برای دانلود و نصب XCode روی Install کلیک کنید. این محیطی برای توسعه نرم افزار برای سیستم عامل های اپل است و می تواند Git را نیز مدیریت کند. به سادگی دستورات را دنبال کنید و نسخه کارآمد Git را خواهید داشت.

راه دوم برای نصب Git در macOS استفاده از نصب کننده مستقل برای macOS است. با این حال، برخی از کاربران گزارش داده اند که این نصب کننده مشکلات سازگاری با macOS X Snow Leopard و Lion (OSX 10.6 و 10.7) دارد. اگر مک شما روی این دو نسخه اجرا می‌شود، توصیه می‌کنیم از XCode استفاده کنید یا از روش سوم نصب یعنی Homebrew استفاده کنید.

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

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

پس از نصب Homebrew، مراحل زیر را دنبال کنید:

  1. ترمینال را راه اندازی کنید و -brew install git را وارد کنید.
  2. نصب باید شروع شود. پس از اتمام، با اجرای دستور git –version بررسی کنید که آیا نصب با موفقیت انجام شده است یا خیر.
  3. از دستور git config برای پیکربندی نام کاربری و ایمیل Git خود استفاده کنید و myusername و [email protected] را با نام کاربری خود جایگزین کنید. هر commit جدیدی که ایجاد کنید با این جزئیات مرتبط خواهد بود.
git config --global user.name "myusername"
git config --global user.email "[email protected]"

نصب Git در ویندوز

برای نصب Git در ویندوز می توانید از نصب کننده مستقل آن استفاده کنید. در اینجا نحوه انجام این کار آمده است:

آخرین نسخه نصب کننده Git برای ویندوز را دانلود کنید.

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

3. Command Prompt را باز کنید. دستور git config را وارد کنید تا نام کاربری و ایمیل Git خود را با جایگزین کردن myusername و [email protected] با نام کاربری خود پیکربندی کنید. اکنون، هر کامیت جدیدی که ایجاد کنید با آنها مرتبط خواهد شد.

git config --global user.name "myusername" $ git config --global user.email "[email protected]"

نحوه استفاده از دستورات Git

راه های مختلفی برای اجرای دستورات در Git وجود دارد، از استفاده از ابزارهای خط فرمان مانند ترمینال در macOS یا خط فرمان در ویندوز گرفته تا رابط های گرافیکی کاربر (GUI).

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

استفاده از Git در یک مخزن محلی

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

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

git init

اولین قدم برای ایجاد یک مخزن جدید اجرای دستور git init است. با انجام این کار یک مخزن Git خالی ایجاد می شود. دایرکتوری جدیدی را در یک پوشه .git در درخت کاری شما تنظیم می کند که حاوی متادیتای Git لازم است.

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

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

git init

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

git init <folder>

به عنوان مثال، برای یک مخزن جدید در پوشه demo-project، نحو باید به شکل زیر باشد:

git init demo-project

این دستور به جای درخت کاری فعلی شما، یک پوشه .git در پوشه demo-project ایجاد می کند.

git add

دستور git add فایل های جدید یا اصلاح شده را از دایرکتوری کاری به ناحیه مرحله بندی اضافه می کند که به آن index نیز می گویند.

Git یک ویژگی ذخیره ساده ندارد. در عوض، از فرآیندی به نام committing استفاده می کند. اولین مرحله برای انجام تغییر در مخزن Git اجرای دستور git add برای انتخاب فایل‌هایی است که می‌خواهید commit کنید.

این دستور آن فایل های انتخاب شده را به ناحیه مرحله بندی منتقل می کند. از آنجا، می‌توانید از دستور Git دیگری – git commit – برای ثبت تغییرات محلی ایجاد شده در آن فایل‌ها در یک مخزن Git استفاده کنید.

چندین راه برای استفاده از git add وجود دارد، از جمله:

. git افزودن . – همه فایل های بدون مرحله را در یک مخزن اضافه کنید.

. git add *.txt – همه فایل‌های txt را در مخزن اضافه کنید.

. git add <نام فایل> – یک فایل خاص اضافه کنید.

. git add – یک فهرست خاص از فایل ها را اضافه کنید.

در اینجا مثالی از اعمال دستور git add آورده شده است:

git add index.html

این خط فرمان یک فایل index.html را به ناحیه مرحله بندی اضافه می کند.

وضعیت git

دستور git status وضعیت فعلی دایرکتوری کاری و ناحیه مرحله بندی را نشان می دهد.

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

همچنین برای کاربران جدید Git مفید است، زیرا این پیام نکاتی را در مورد اقداماتی که در شرایط خاص انجام شود ارائه می دهد.

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

علاوه بر این، این دستور همچنین می تواند نشان دهد که آیا درگیری ادغام دارید و کدام فایل ها باعث ایجاد مشکل شده اند.

git rm –cached

دستور git rm –cached یک فایل را از فهرست حذف می کند، اما در دایرکتوری کار دست نخورده باقی می ماند. اگر قصد دارید در آینده آن را دوباره به مخزن Git خود اضافه کنید، این کار مفید است.

دو راه برای پاک کردن کش خود با استفاده از دستور git rm –cached وجود دارد، بسته به اینکه آیا می خواهید فقط فایل های خاصی را حذف کنید یا می خواهید کل دایرکتوری را پاک کنید.

اگر می خواهید فایل خاصی را از فهرست حذف کنید، نام فایل را بعد از دستور مشخص کنید. در این مثال، فایلی به نام file.conf را حذف می کنیم:

git rm --cached file.conf

اگر می خواهید یک فهرست کامل را از فهرست حذف کنید، از دستور زیر استفاده کنید:

$ git rm -r --cached <directory name>

.gitignore

ممکن است فایل‌هایی وجود داشته باشند که نخواهید هنگام انجام مجموعه‌ای از تغییرات، مانند پیکربندی‌های خصوصی و فایل‌های مخفی سیستم، آن‌ها را اضافه کنید. Git دستور ignore ندارد، اما می‌توانید از فایل .gitignore برای این کار استفاده کنید.

یک فایل .gitignore یک فایل متنی است که مشخص می کند Git باید کدام فایل ها و پوشه ها را در درخت کاری شما نادیده بگیرد. معمولاً در فهرست اصلی پروژه وجود دارد.

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

. فایل های سیستمی مخفی مانند .DS_Store و Thumbs.db

. فایل های تولید شده در طول زمان اجرا، مانند .log و .temp

. کش های وابستگی، مانند محتویات /node_modules و /packages

. فایل های پیکربندی IDE شخصی، مانند .idea/workspace.xml

. دایرکتوری های خروجی مانند /bin، /out و /target بسازید

برای ایجاد یک فایل .gitignore، یک فایل متنی ساده با استفاده از هر ویرایشگر متنی مانند Notepad در ویندوز ایجاد کنید و نام آن را gitignore. در صورت نیاز فایل های مورد نظر را اضافه کنید.

در اینجا نمونه ای از فایل .gitignore آمده است:

filename.txt
directory/
*.html
*~

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

. نام فایل تحت اللفظی – از یک نام فایل خاص مانند filename.txt چشم پوشی کنید.

. دایرکتوری ها – با اضافه کردن علامت اسلش (/) در انتهای نام دایرکتوری، به عنوان مثال، directory/، کل دایرکتوری را نادیده بگیرید.

. Wildcard – هر فایلی که با پسوند خاصی ختم می شود را با اضافه کردن یک ستاره (*) قبل از نام پسوند نادیده بگیرید، به عنوان مثال، *.html. علاوه بر این، *~ از Git می خواهد که هر فایلی را که با ~ ختم می شود، مانند index.html~ نادیده بگیرد.

همچنین می توانید با استفاده از ! پیشوند

به عنوان مثال، شما نمی‌خواهید Git از example.html چشم پوشی کند، حتی اگر همه فایل‌های دیگر با پسوند html نادیده گرفته شوند. در این صورت، این را به لیست .gitignore خود اضافه کنید:

*.html
!example.html

به یاد داشته باشید که حذف یک فایل در یک فهرست نادیده گرفته شده غیرممکن است.

به عنوان مثال، شما نمی توانید directory/example.log را از یک فهرست مسیر نادیده گرفته شده حذف کنید. اگر !directory/example.log را به فایل .gitignore اضافه کنید، Git همچنان directory/example.log را نادیده می گیرد زیرا کل فهرست نادیده گرفته می شود.

git commit

دستور git commit یک عکس فوری از محتوای مخزن شما در یک زمان خاص ایجاد می کند.

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

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

این دستور دومین مرحله برای ذخیره تغییرات ایجاد شده در یک مخزن است. فرآیند با دستور git add برای مرحله بندی هر تغییر جدیدی که می خواهید در یک commit قرار دهید شروع می شود. سپس، git commit یک commit با آن تغییرات در یک مخزن ایجاد می کند. تا زمانی که git commit را اجرا نکنید، دستور git add هیچ تاثیری نخواهد داشت.

هنگامی که کد در شعبه محلی شما آماده شد، از git push برای متعهد شدن به مخزن راه دور استفاده کنید. این به اعضای مختلف تیم امکان می‌دهد تا کد خود را در مخزن محلی خود قرار دهند و بعداً زمانی که کد کاملاً آماده شد، آن را به مخزن اصلی فشار دهند.

گزینه های مختلفی برای استفاده از git commit وجود دارد که رایج ترین گزینه ها به شرح زیر است:

. git commit – فرمان اولیه برای انجام تغییرات مرحله‌ای. یک ویرایشگر متنی راه اندازی می کند که از شما می خواهد یک پیام commit ارسال کنید که به اختصار تغییراتی را که ایجاد کرده اید توضیح می دهد.

. git commit -m “پیام” – یک commit با یک پیام درون خطی ایجاد می کند. از هر پیامی استفاده کنید، اما مطمئن شوید که برای سایر اعضای تیم مختصر و قابل درک است.

. git commit -a – یک commit ایجاد می کند که شامل تمام تغییرات در یک فهرست کاری می شود. این دستور فقط شامل تغییراتی در فایل های ردیابی شده است که با استفاده از دستور git add اضافه شده اند.

. git commit -am “پیام” – عملکرد گزینه های -a و -m را ترکیب می کند که یک commit از تمام تغییرات مرحله ای ایجاد می کند و شامل یک نظر درون خطی با آن می شود.

. git commit –amend – اجازه می دهد تا آخرین commit را تغییر دهید، مانند ویرایش آخرین پیام commit بدون تغییر عکس فوری.

به عنوان مثال، شما به تازگی استایل یک صفحه اصلی را تغییر داده اید و فایل css/styles.css را به قسمت مرحله بندی منتقل کرده اید. اکنون می توانید به اجرای git commit ادامه دهید و یک پیام commit در آنجا قرار دهید تا به هر کسی کمک کنید تا تغییر را درک کند.

git commit -m "Change the styling on homepage"

git log

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

تفاوت بین git log و git status این است که وضعیت git برای فهرست فعلی اعمال می شود، در حالی که git log برای تاریخچه مخزن اعمال می شود.

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

git log

Git لیستی شبیه به مثال زیر برمی گرداند:

این خروجی آخرین اطلاعات لاگ موجود در مخزن را نشان می دهد. در اینجا تفکیک این مثال آمده است:

. commit ID – یک رشته تصادفی از اعداد و حروف.

. نویسنده – در این مورد، “تست” است. همچنین ایمیل نویسنده را نشان می دهد.

. تاریخ – تاریخ و زمان دقیق را مشخص می کند.

. پیام commit – در این مثال، “فایل سلام اضافه شد” و “فایل جدید” است.

همچنین امکان فیلتر کردن خروجی با افزودن پرچم های مختلف وجود دارد. چندین گزینه برای فیلتر کردن گزارش های شما وجود دارد. برای مشاهده کاربردهای فیلترهای git log مثال های زیر را بررسی کنید:

git log -n 5

پرچم -n به شما کمک می کند تعدادی از آخرین گزارش های خود را ببینید. به عنوان مثال، در اینجا دستور git log لیستی از پنج تعهد اخیر انجام شده به یک مخزن را برمی گرداند:

git log --author="Jane Doe"

پرچم نویسنده تعهدات توسط شخصی که تغییرات را نوشته است را فیلتر می کند. مثال بالا لیستی از commit هایی را که توسط Jane Doe تغییر داده شده اند را نشان می دهد.

در پروژه های بزرگتر، گاهی اوقات شخصی که یک commit را ایجاد می کند، کسی نیست که آن را به مخزن اصلی هل می دهد. به همین دلیل است که Git همچنین گزینه ای برای فیلتر کردن گزارش با نام committer با استفاده از پرچم committer ارائه می دهد:

git log --committer="John Doe"

در این مثال، دستور commit های انجام شده توسط John Doe را نشان می دهد.

git log --committer="John Doe"

پرچم‌های –before و –after نتایج git log را بر اساس تاریخ فیلتر می‌کنند. هر دو پرچم طیف وسیعی از قالب‌های تاریخ را می‌پذیرند، اما رایج‌ترین آنها تاریخ کامل و مقادیر نسبی هستند. مثال دستور git log در بالا لیستی از commit ها را پس از 28 اکتبر 2021 بازیابی می کند.

git log --before="yesterday"

نمونه ای از ارزش نسبی دیروز است. دستور git log بالا لیستی از commit های روز قبل را بازیابی می کند.

git log --after="2021-10-28" --before="2022-02-23"

ترکیب هر دو پرچم – قبل و بعد – برای فیلتر کردن تعهدات از یک بازه زمانی خاص نیز امکان پذیر است. مثال بالا لیستی از commit های منتشر شده از 28 اکتبر 2021 تا 23 فوریه 2022 را بازیابی می کند.

git log -- index.html

دستور git log در بالا زمانی مفید است که شما فقط می خواهید لیستی از commit هایی را ببینید که بر یک فایل خاص تأثیر می گذارد. در این مثال، دستور از Git می‌خواهد تا تغییرات ایجاد شده در فایل index.html را در کد شما نشان دهد.

git log -S"# Hello"

پرچم -S شما را قادر می سازد تمام تغییرات commit را که شامل یک خط کد خاص هستند جستجو کنید. در مثال بالا، خط فرمان commit هایی را جستجو می کند که عبارت # Hello را به کد شما اضافه یا حذف کرده اند.

git log a12bcd3..a45b67c

برای فیلتر کردن گزارش خود بر اساس محدوده خاصی از commit ها، از دستور git log .. استفاده کنید. مثال بالا لیستی از commit های انجام شده بین فشار دادن commit “a12bcd3” و commit “a45b67c” را نشان می دهد.

git log --grep="feat:"

پرچم –grep به شما اجازه می دهد تا لاگ خود را بر اساس پیام commit فیلتر کنید. این دستور بالا لیستی از تمام commit هایی را که نظرات با feat: شروع می شوند، بازیابی می کند.

کار با Git Branches

یکی از ویژگی های ضروری در سیستم کنترل نسخه Git، انشعاب است. شاخه‌های Git به شما امکان می‌دهند از پایگاه کد اصلی فاصله بگیرید و بدون تأثیر بر کد اصلی اصلی یا شاخه‌های دیگر، تغییراتی در آن ایجاد کنید. به عبارت دیگر، به توسعه دهندگان این امکان را می دهد که به صورت موازی روی خطوط توسعه مستقل کار کنند.

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

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

اگر توسعه‌دهنده دیگری کار خود را در زمان دیگری تمام کند، این روی شخص دیگری تأثیری نخواهد داشت. همه این تغییرات به طور ایمن در هر شعبه نگهداری می شوند و تنها زمانی که به شاخه اصلی فشار داده می شوند، بر پایه کد اصلی تأثیر می گذارد.

برای درک بهتر نحوه عملکرد شاخه های Git، تصویر زیر را بررسی کنید:

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

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

شاخه git

دستور git branch برای ایجاد، تغییر نام و حذف شاخه ها استفاده می شود. همچنین می تواند فهرستی از شعب محلی و راه دور را بازیابی کند.

این دستور معمولاً همراه با git checkout و git merge برای تغییر شاخه ها و ادغام نسخه های مختلف کد استفاده می شود.

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

git branch v2.0

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

توجه داشته باشید که تاریخچه مخزن هنگامی که یک شاخه جدید ایجاد می کنید یکسان باقی می ماند، زیرا Git فقط یک اشاره گر به آن شاخه جدید ایجاد می کند.

در مرحله بعد، اگر می خواهید نام شعبه خود را تغییر دهید، می توانید از پرچم -m برای شاخه ای که در حال حاضر مشاهده می کنید استفاده کنید. به عنوان مثال، شما می خواهید شاخه v2.0 را به v.2.0.1 تغییر نام دهید. باید شاخه v2.0 را باز کنید و این کد را اعمال کنید:

git branch -m v.2.0.1

برای حذف یک شاخه در یک مخزن، از پرچم -d استفاده کنید. فرض کنید می خواهید شاخه v.2.0.1 را حذف کنید. در اینجا دستور انجام این کار وجود دارد:

git branch -d v.2.0.1

اگر دستور git branch -d را اجرا کنید و تغییراتی در این شاخه وجود داشته باشد که در شاخه دیگری ادغام نشده است، Git آن شاخه را حذف نخواهد کرد. این دستور به شما کمک می کند تا مطمئن شوید که هیچ تغییری را به طور تصادفی از دست نمی دهید.

اگر عمدا تصمیم به حذف دائمی یک شعبه دارید، حتی اگر تغییراتی داشته باشد که در هیچ جایی ادغام نشده اند، از پرچم -D استفاده کنید. در اینجا مثالی برای حذف اجباری شاخه ای به نام v.2.0.1 آورده شده است:

git branch -d v.2.0.1

فرمان با پرچم -D هنگام اجرا هیچ هشداری را نشان نمی دهد، بنابراین به خاطر داشته باشید که فقط زمانی از آن استفاده کنید که مطمئن هستید شاخه را حذف می کنید.

در نهایت، اگر می‌خواهید فهرستی از شاخه‌ها را در یک مخزن Git بازیابی کنید، این نحو را اجرا کنید:

git branch

در اینجا نمونه ای از خروجی این دستور آمده است:

* main
* v.2.0.1
* v.1

همچنین می توانید از دستور git branch -list استفاده کنید که همان لیست را از مخزن شما باز می گرداند.

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

تگ Git معمولا برای علامت گذاری نسخه انتشار استفاده می شود. برای مثال، هر زمان که توسعه‌دهندگان آماده راه‌اندازی نسخه‌های جدید پروژه هستند، برچسب‌هایی را برای شناسایی آسان‌تر ایجاد می‌کنند.

برچسب‌ها مانند شاخه‌هایی هستند که تغییر نمی‌کنند – پس از ایجاد، دیگر سابقه‌ای از commit ندارند.

از دستور زیر برای ایجاد یک تگ Git جدید استفاده کنید:

git tag <tagname>

الگوی متداول نام تگ در کنترل نسخه، استفاده از شماره نسخه، مانند v1.0 است.

پرداخت git

برای شروع اصلاح یک شاخه، باید به آن سوئیچ کنید. اینجا جایی است که از دستور git checkout برای جابجایی بین شاخه های مختلف استفاده می کنید.

پس از بررسی یک شعبه، فهرست کاری شما تغییر خواهد کرد. به عنوان مثال، شما در شاخه v.1 هستید و می خواهید به شاخه v.2 بروید. برای انجام این کار، این دستور را اعمال کنید:

git checkout v.2

اکنون دایرکتوری فعلی شما شاخه v.2 است.

اگر مطمئن نیستید که در حال حاضر در کدام شعبه هستید، از دستور زیر استفاده کنید تا متوجه شوید:

git branch --show-current

همچنین، می‌توانید از این نحو برای مشاهده شاخه فعلی که در آن هستید استفاده کنید:

دستور git checkout همچنین می تواند یک شاخه جدید ایجاد کند. معمولاً ابتدا باید دستور git branch را برای ایجاد یک شاخه جدید اجرا کنید، سپس دستور git checkout را برای بررسی آن اجرا کنید. با این حال، دستور نشان داده شده در زیر روش راحت تری را ارائه می دهد:

git rev-parse --abbrev-ref HEAD

این دستور به طور همزمان یک شاخه جدید به نام beta-v.3 ایجاد می کند و آن را بررسی می کند و به شما امکان می دهد بلافاصله به آن تغییر دهید.

git checkout -b beta-v.3

توجه داشته باشید که شاخه ایجاد شده با دستور git checkout -b به طور پیش فرض بر اساس HEAD فعلی خواهد بود.

git ادغام

دستور git merge یک خط توسعه مستقل را با خط دیگری ترکیب می کند و آنها را در یک شاخه واحد ادغام می کند.

به عنوان مثال، زمانی که یک توسعه‌دهنده تغییرات ایجاد شده در یک شاخه مرحله‌ای را با شاخه اصلی ادغام می‌کند، این دستور یک تاریخچه مخزن فورک شده را در یک تاریخچه پروژه یکپارچه جمع می‌کند.

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

برای اجرای این دستور، مطمئن شوید که در شاخه اصلی هستید. اگر هنوز آنجا نیستید، با اجرای دستور git checkout به شعبه اصلی خود بروید. اگر شاخه ای که می خواهید ادغام کنید، پروژه آزمایشی است، دستور merge باید به شکل زیر باشد:

git merge demo-project

اگر دو شاخه ای که هر دو را ادغام می کنید، یک بخش از یک فایل را تغییر داده اند، Git نمی تواند تعیین کند که از کدام نسخه استفاده کند، بنابراین یک تضاد ادغام ایجاد می کند.

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

مدیریت Remote Git Repository

اکنون که یاد گرفتید چگونه در مخزن محلی خود پیمایش کنید، زمان آن رسیده است که در مورد مدیریت مخزن Git راه دور یاد بگیرید. مخازن راه دور به شما امکان می دهند با استفاده از پلتفرم های میزبانی کد مانند GitHub، BitBucket یا GitLab با دیگران در پروژه Git همکاری کنید.

یک مخزن راه دور معمولاً روی یک سرور راه دور میزبانی می شود. بنابراین، بر خلاف یک مخزن محلی، برای دسترسی به یک مخزن از راه دور نیاز به اتصال به اینترنت دارید.

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

نقشه راه زیر را برای گردش کار Git در رابطه با یک مخزن راه دور ببینید:

آخرین بخش این آموزش دستورات مورد استفاده در هنگام مدیریت مخازن راه دور را توضیح می دهد.

git remote

دستور git remote به شما امکان ایجاد، مشاهده و حذف اتصالات به یک مخزن راه دور را می دهد.

در اینجا چند نمونه از استفاده از دستور git remote آورده شده است.

اگر می خواهید تنظیمات کنترل از راه دور git خود را مشاهده کنید، این نحو را اجرا کنید:

git remote

این دستور لیستی از اتصالات راه دور شما را به مخازن دیگر برمی گرداند.

برای افزودن یک اتصال مخزن از راه دور جدید، از دستور زیر استفاده کنید:

git remote add <name> <url>

به عنوان مثال، اگر می خواهید یک مخزن از راه دور به نام new-remote اضافه کنید، URL آن https:/github.com/user/new-remote.git است. نحو به این صورت خواهد بود:

git remote add new-remote https:/github.com/user/new-remote.git

هنگامی که آن را اضافه کردید، می توانید از new-remote به عنوان میانبر برای https:/github.com/user/new-remote.git در سایر دستورات Git استفاده کنید.

اگر می خواهید نام یک اتصال راه دور را تغییر دهید، از این دستور استفاده کنید:

git remote rename <old-name> <new-name>

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

git remote rm <name>

git push

دستور git push commit های موجود در یک مخزن محلی را به یک مخزن راه دور منتقل می کند.

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

git remote -v

اگر به آدرس صحیح اشاره نمی کند، آدرس را با این دستور تغییر دهید:

git remote set-url <remote repo name> <remote repo address>

هنگامی که به آدرس صحیح اشاره کرد، این دستور را اجرا کنید:

git push <remote name> <branch name>

به عنوان مثال، اگر نام مخزن راه دور مبدا و نام شاخه اصلی باشد، نحو باید به شکل زیر باشد:

git push origin main

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

git pull

دستور git pull محتوای یک مخزن راه دور را در ماشین محلی شما بازیابی و دانلود می کند. در اینجا نحوی برای انجام این کار آمده است:

git pull <remote repository name>

به عنوان مثال، برای بازیابی محتوای شاخه اصلی، از این دستور استفاده کنید:

git pull main

اگر می خواهید کد را فقط از یک شاخه خاص استخراج کنید، از این نحو استفاده کنید:

git checkout <branch name>
git pull <remote name>

فرض کنید می خواهید روی شاخه ای به نام demo-v1 با کد کار کنید و نام مخزن راه دور اصلی است. دستور به صورت زیر خواهد بود:

git checkout demo-v1
git pull main

دستور git checkout شما را به شعبه کدی که می خواهید بکشید منتقل می کند. سپس دستور git pull کد را بازیابی می کند.

گاهی اوقات مردم در مورد تفاوت بین دستورات git pull و git fetch گیج می شوند. به طور خلاصه، هر دو برای بازیابی محتوای یک مخزن راه دور استفاده می‌شوند، اما اولی فقط داده‌ها را دانلود می‌کند، در حالی که دومی داده‌ها را دانلود کرده و در فایل‌های کاری یکپارچه می‌کند.

از اینجا می بینید که عملیات کشش git در واقع ترکیبی از دستورات git fetch و git merge است.

git clone

دستور git clone یک کپی محلی از یک مخزن راه دور ایجاد می کند. توسعه دهندگان از این دستور برای به دست آوردن یک کپی از یک مخزن موجود استفاده می کنند تا آن را در ماشین محلی خود بدون تأثیر بر پایگاه کد اصلی توسعه دهند.

همچنین یکی از دو راه در Git برای راه اندازی یک مخزن است – با استفاده از دستور git init برای ایجاد یک مخزن جدید Git یا استفاده از دستور git clone برای شبیه سازی یک مخزن موجود.

همانند دستور git init، دستور git clone معمولاً فقط یک بار اجرا می شود. با شبیه سازی، تمام ابرداده ها، شاخه های Git و تاریخچه کامل مخزن را خواهید داشت.

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

git clone <remote URL>

فرض کنید می خواهید یک مخزن GitHub را کلون کنید و بلافاصله ویرایش آن را شروع کنید. برای این کار این دستورات را اجرا کنید:

git clone https:/github.com/user/new-remote.git
cd new-remote

در این مثال، Git یک دایرکتوری جدید به نام new-remote ایجاد می کند. سپس دستور cd شما را به دایرکتوری جدید منتقل می کند، جایی که می توانید شروع به مشاهده و ویرایش فایل ها کنید.

علاوه بر استفاده از پروتکل اصلی Git، می‌توانید شبیه‌سازی را از طریق پروتکل HTTPS یا SSH نیز انجام دهید.

مراحل در پلتفرم‌های Git کمی متفاوت است، اما دستور مشابه است.

در اینجا مراحل شبیه سازی یک مخزن از طریق GitHub آمده است:

صفحه اصلی مخزن را که می خواهید کلون کنید باز کنید.

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

کد زیر قسمت Clone with HTTPS را کپی کنید تا مخزن با استفاده از HTTPS کلون شود. برای کلون کردن مخزن با استفاده از کلید SSH، روی Use SSH کلیک کنید و کد را کپی کنید، از جمله گواهی صادر شده توسط مرجع گواهی SSH سازمان شما.

Git Bash را باز کنید.

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

از این دستور برای کلون کردن از طریق HTTPS استفاده کنید. URL همانی است که قبلاً کپی کرده اید:

صفحه اصلی مخزن را که می خواهید کلون کنید باز کنید.

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

کد زیر قسمت Clone with HTTPS را کپی کنید تا مخزن با استفاده از HTTPS کلون شود. برای کلون کردن مخزن با استفاده از کلید SSH، روی Use SSH کلیک کنید و کد را کپی کنید، از جمله گواهی صادر شده توسط مرجع گواهی SSH سازمان شما.

Git Bash را باز کنید.

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

از این دستور برای کلون کردن از طریق HTTPS استفاده کنید. URL همانی است که قبلاً کپی کرده اید:

$ git clone https://github.com/yourusername/yourrepository

یا این دستور برای کلون کردن از طریق SSH:

$ git clone ssh://github.com/yourusername/yourrepository

7. Enter را بزنید. این است، شما با موفقیت یک کلون محلی ایجاد کردید!

اگر از Bitbucket استفاده می کنید، در اینجا مراحل انجام این کار وجود دارد:

مخزنی را که می خواهید کلون کنید باز کنید.

روی + در نوار کناری جهانی کلیک کنید و Clone this repository را انتخاب کنید.

دستور کلون را با فرمت HTTPS یا SSH کپی کنید. به خاطر داشته باشید که اگر از SSH استفاده می کنید، مطمئن شوید که کلید عمومی خود را در Bitbucket دارید و در سیستم محلی که می خواهید کلون خود را در آن ذخیره کنید بارگذاری شده است.

با استفاده از ترمینال، به دایرکتوری محلی که می‌خواهید مخزن را شبیه‌سازی کنید، بروید.

دستوری را که در مرحله سوم کپی کرده اید قرار دهید.

اگر از HTTPS استفاده می کنید، دستور به صورت زیر خواهد بود:

$ git clone https://[email protected]/yourusername/yourrepository

برای SSH از این دستور استفاده کنید:

$ git clone ssh://[email protected]:yourusername/yourrepository

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

نتیجه

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

با این حال، یادگیری Git برای مبتدیان می تواند دلهره آور باشد، زیرا عملیات آن شامل دستورات زیادی است. همچنین درک مناطق توسعه چندگانه Git – از مخزن محلی گرفته تا مخزن راه دور – زمان می برد، اما هنگامی که درک بهتری از آن پیدا کردید، می توانید پروژه توسعه خود را به طور موثرتری هدایت کنید. امیدواریم این آموزش راه مفیدی برای یادگیری اصول Git ارائه دهد. اگر می‌خواهید درباره استفاده از Git برای بهبود بهره‌وری بیشتر بدانید، سعی کنید گردش کار خود را با استفاده از قلاب‌های git خودکار کنید. موفق باشید.

سوالات متداول آموزش Git

آیا Git و GitHub یکسان هستند؟

Git یک سیستم مدیریت کد منبع باز رایگان است که ردیابی تاریخچه کد منبع شما را آسان می کند. از طرف دیگر، GitHub یک سرویس میزبانی ویژه Git مبتنی بر ابر برای مخازن Git است.

آیا Git یک زبان برنامه نویسی است؟

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

امتیاز این مطلب
سهیل دهقانی
نوشته شده توسط

سهیل دهقانی

علاقه مند به فناوری و تکنولوژی های روز دنیا کارشناس سئو و تولید محتوا

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

گوگل فارکس آموزش تخصصی آمارکتس