در دنیای برنامهنویسی، مدیریت و کنترل تغییرات کدها برای توسعه پروژههای کوچک و بزرگ یکی از چالشهای اساسی برای تیمهای توسعه دهنده است. با رشد هرچه بیشتر پروژههای نرمافزاری و افزایش کار گروهی، نیاز به سیستمی که بتواند نسخههای مختلف کدها را مدیریت کند، بیشتر از قبل احساس میشود. در این مقاله از بلاگ آسا به بررسی گیت (Git) به عنوان یکی از قویترین سیستمهای مدیریت نسخه میپردازیم.
گیت (Git) چیست؟
ابزار گیت یک سیستم حرفهای کنترل ورژن (VCS) است که به دلیل کاربرد زیاد آن در پروژهها، تبدیل به یک نیاز اساسی بین برنامهنویسها و توسعهدهنگان شده است. گیت به شما کمک میکند تا خیلی راحت و به صورت تیمی روی پروژههای مختلف کار کنید و کدهای پروژه خود را به بهترین شکل مدیریت، دستهبندی و ذخیره کنید. همچنین میتوانید تغییرات فایلها و کد پروژه خود را در قالب نسخههای مختلف ذخیره و در صورت نیاز به نسخههای قبلی برگردید.
ویژگیها و کاربردهای Git
ویژگیهای خاص و کاربردی زیادی در گیت وجود دارد که باعث شده این سیستم به عنوان یک ابزار ضروری میان برنامهنویسها شناخته شود. در ادامه به معرفی این ویژگیها میپردازیم:
- مدیریت ورژنها: در گیت تمامی تغییرات بر روی کدها و فایلهای مرتبط با پروژه ذخیره و نگهداری میشود تا در صورت بروز هر گونه ارور یا مشکل، بتوانید به سادگی به ورژنهای قبلی و بدون باگ برگردید.
- امکان استفاده آفلاین: برای استفاده از گیت نیاز به اینترنت ندارید و میتوانید به صورت لوکال (local) و کاملا آفلاین از تمامی امکانات آن استفاده کنید.
- شاخهها (Branches): هنگام توسعه پروژه، شاخههای مختلف میتوانند برای توسعه ویژگیهای جدید یا رفع باگ ایجاد شوند و سپس با شاخه اصلی ادغام (Merge) شوند. این ویژگی باعث میشود انسجام و مدیریت پروژه بیشتر شود و هر بخش مجزا در پروژه، مسیر مربوط به خودش را طی کند.
- سرعت و کارایی: گیت طوری طراحی شده که در پروژههای بزرگ و با حجم زیاد هم سریع باشد. عملیاتهایی مثل شاخهسازی، ادغام و بررسی تاریخچه حتی در پروژههای پیچیده به سرعت انجام میشوند. این سرعت بالا باعث شده گیت نسبت به باقی سیستمهای مدیریت ورژن، برتری بیشتری داشته باشد.
- مخازن راه دور (Remote Repositories): گیت این امکان را برایتان ایجاد میکند تا ریپازیتوریها روی سرور قرار بگیرند (مثل GitHub یا GitLab) تا توسعهدهندگان بتوانند به صورت تیمی و از راه دور روی یک پروژه کار کنند. این قابلیت برای افرادی که به صورت پراکنده، تیمی و دورکار فعالیت میکنند، اهمیت زیادی دارد.
مفهوم Stage در گیت به چه معنا است؟
در Git، مفهوم استیج (Stage) یکی از مهمترین بخشهای فرآیند این سیستم به شمار میرود. استیج یک فضای موقت است که تغییرات فایلهای شما را قبل از کامیت (Commit) ذخیره میکند. این فرایند دارای سه استیج مختلف برای فایلهای پروژه است که در ادامه آنها را معرفی میکنیم.
۱- Untracked
در این مرحله، فایل مورد نظر وجود دارد اما جزئی از سیستم کنترل ورژن گیت نیست و تغییرات آن توسط گیت کنترل نمیشود.
۲- Staged
پس از وارد شدن فایل به این مرحله، تمام تغییرات آن توسط گیت کنترل میشود. البته در نظر داشته باشید هیچ کدام از تغییرات در ریپازیتوری ذخیره نهایی نمیشوند و باید فایل خود را کامیت کنید.
۳- Committed
در این مرحله تمامی تغییرات فایل با یک پیام و یک نسخه خاص در ریپازیتوری ذخیره میشود. شما میتوانید در هر زمان دلخواه به این کامیت برگردید و مجدد تغییرات خود را اعمال کنید.
نحوه استفاده از گیت
برای استفاده از گیت، شما باید یک سری مراحل نسبتا ساده را دنبال کنید. این مراحل از نصب گیت تا انجام عملیاتهای اساسی مثل ایجاد مخزن (Repository)، شاخهسازی (Branching)، ارسال تغییرات (Committing) و اشتراکگذاری کد با دیگران را شامل میشود. در ادامه نحوه استفاده از گیت را با جزئیات بیشتر با هم بررسی میکنیم.
۱- نصب گیت
در اولین قدم باید گیت را بر اساس سیستمعامل خود نصب کنید.
لینوکس (Ubuntu/Debian):
با وارد کردن کدهای زیر در کنسول لینوکس میتوانید گیت را به راحتی نصب کنید:
sudo apt update
sudo apt install git
ویندوز:
با وارد شدن به سایت رسمی گیت در این لینک، میتوانید Git for Windows را دانلود و نصب کنید. به همراه این ابزار علاوه بر خود گیت، ابزار Git Bash هم به صورت خودکار نصب میشود.
مکاواس:
اگر Homebrew را بر روی سیستم خود نصب کردهاید، میتوانید از دستور زیر در کنسول مک استفاده کنید:
brew install git
۲- پیکربندی گیت
پس از نصب، باید نام کاربری و ایمیل خود را برای گیت تنظیم کنید. این اطلاعات به عنوان امضای شما برای ثبت تغییرات به صورت کامیت استفاده میشود.
git config –global user.name “Your Name”
git config –global user.email your.email@example.com
۳- ایجاد مخزن جدید (Repository)
برای شروع یک پروژه با گیت، ابتدا باید یک ریپازیتوری جدید ایجاد کنید. ریپازیتوری میتواند لوکال (Local) باشد یا روی سروری مثل GitHub قرار بگیرد. برای ایجاد یک ریپازیتوری در دایرکتوری محلی، ابتدا به مسیر پروژه خود بروید و دستور زیر را اجرا کنید:
git init
این دستور یک ریپازیتوری گیت جدید در پوشه فعلی ایجاد میکند.
۴- اضافهکردن فایلها به ریپازیتوری
پس از ایجاد ریپازیتوری، باید فایلهای پروژه را به آن اضافه کنید. در واقع با این کار فایلها را از مرحله Untracked به Staged منتقل میشوند. این فایلها میتوانند اسناد، کد و یا هر نوع فایل دیگری باشند. در ادامه دستوراتی که برای مدیریت و افزودن فایلها نیاز دارید را بررسی میکنیم.
مشاهده وضعیت فایل ها و تغییرات آنها:
git status
اضافه کردن تمام فایلها:
git add
اضافه کردن فایل خاص:
git add filename.txt
۵- انجام کامیت (Commit)
کامیت به معنی انتقال فایل از مرحله Staged به Committed و ثبت تغییرات شما در ریپازیتوری است. گیت به صورت خودکار همه تغییرات شما را زیر نظر دارد اما برای ثبت نهایی آنها در ریپازیتوری، حتما باید کامیت ثبت کنید. در غیر این صورت هیچ کدام از تغییرات شما بر روی پروژه اعمال نمیشود.
“شرح تغییرات” git commit -m
در بخش «شرح تغییرات» باید توضیح مختصری از تغییرات خود بنویسید تا در ادامه راحتتر بتوانید متوجه تغییرات و موضوع کامیت خود شوید.
”git commit -m “add get_config function
۶- ایجاد شاخه (Branch) جدید
یکی از قابلیتهای جذاب گیت، ایجاد شاخههای جداگانه برای توسعه ویژگیهای جدید یا رفع باگها است. این کار به شما کمک میکند تا شاخه اصلی (Main) پروژه تحت تاثیر تغییرات آزمایشی قرار نگیرد و استحکام خودش را حفظ کند.
ایجاد شاخه جدید:
git branch branch-name
تغییر به شاخه جدید:
git checkout branch-name
۷- ادغام شاخهها (Merging)
پس از انجام تغییرات در شاخهها و اطمینان از درستی آنها، میتوانید شاخه مد نظر خود را به شاخه اصلی (معمولا main یا master) ادغام کنید. در دو مرحله میتوانید این کار را انجام دهید.
انتخاب و ورود به شاخه اصلی:
git checkout main
ادغام شاخه دیگر با شاخه اصلی:
git merge branch-name
۸- کار با مخازن راه دور (Remote Repositories)
اگر میخواهید پروژه خودتان را در ریپازیتوریهای راه دور مثل GitLab، GitHub یا Bitbucket ذخیره کنید، ابتدا باید ریپازیتوری محلی خود را به ریپازیتوری راه دور وصل کنید. فرض کنید میخواهیم پروژه خودمان را به گیتهاب انتقال دهیم:
اضافه کردن ریپازیتوری گیتهاب:
git remote add origin http://github.com/your-username/rep-name.git
ارسال تغییرات به ریپازیتوری گیتهاب:
git push -u origin main
۹- کلون کردن (Clone) ریپازیتوری راه دور
اگر یک ریپازیتوری راه دور دارید و میخواهید آن را روی سیستم خود دانلود کنید، از دستور «clone» استفاده کنید.
git clone http://github.com/your-username/rep-name.git
۱۰- بروزرسانی ریپازیتوری (pull & Push)
اگر تغییراتی در ریپازیتوری راه دور یا محلی ایجاد شده و میخواهید آنها را ارسال یا دریافت کنید، میتوانید از دو دستور «Pull» و «Push» استفاده کنید.
دریافت تغییرات از ریپازیتوری راه دور به لوکال:
git pull origin main
ارسال تغییرات از ریپوزیتوری لوکال به راه دور:
git push origin main
۱۱- مشاهده تاریخچه تغییرات
رای مشاهده تاریخچه کامیتها و تغییرات آنها، میتوانید از دستور زیر استفاده کنید:
git log
این دستور فهرستی از تمام کامیتهای پروژه به همراه اطلاعاتی مثل شناسه کامیت (commit ID)، نام فرد ثبت کننده، تاریخ و پیام کامیت را نمایش میدهد.
۱۲- بازگشت به نسخههای قبلی (Revert)
اگر هنگام توسعه پروژه، به مشکلی برخوردید و نیاز داشتید که به نسخه قبلی برگردید، میتوانید از دستورات «git checkout» یا «git revert» استفاده کنید. برای مثال:
بازگشت به کامیت خاص:
git checkout commit-id
بازگشت به وضعیت قبلی و نگهداشتن تغییرات در تاریخچه:
git revert commit-id
این مراحل اصلیترین کارهایی هستند که برای استفاده از گیت باید بدانید. البته گیت دارای امکانات پیشرفتهتری هم هست که میتوانید با گذر زمان و تجربه بیشتر، در مواقع خاصی از آنها استفاده کنید.
جمعبندی
در کل گیت به عنوان یکی از قویترین و پرکاربردترین سیستمهای کنترل ورژن، ابزاری ضروری برای برنامهنویسها و توسعهدهندگان نرمافزار است. گیت با ارائه امکاناتی مثل ردیابی تغییرات، مدیریت نسخههای مختلف پروژه و ایجاد قابلیت همکاری بین تیمهای مختلف برنامه نویسی، توسعه نرمافزار را به بهترین شکل سازماندهی و سادهسازی میکند. همچنین گیت نقش حیاتی در فرآیند توسعه نرمافزارهای مدرن ایفا میکند و با ابزارهایی مثل GitHub و GitLab، جامعه برنامهنویسهای جهان را بهتر از قبل به هم متصل کردهاست.
منابع:
https://archaeogeek.github.io/gettingstartedwithgit/git/stages.html
https://www.w3schools.com/git/git_staging_environment.asp?remote=github
https://www.nobledesktop.com/learn/git/what-is-git#:~:text=Git%20is%20the%20most%20commonly,be%20merged%20into%20one%20source.
دیدگاهتان را بنویسید