اشکان دژاگه: از گیت تا دپلویمنت
دوست داری مثل یه برنامه نویس حرفه ای یه اپلیکیشن بسازی که هزاران کاربر ازش استفاده کنن؟ یا شاید دوست داری یه وبسایت جدید طراحی کنی که یه ایده خلاقانه رو به دنیا معرفی کنه؟
برای اینکه بتونی این رویا رو به واقعیت تبدیل کنی باید با ابزارهای قدرتمندی آشنا باشی که بهت کمک می کنن تا یه پروژه نرم افزاری رو از ایده تا اجرا به سرانجام برسونن. یکی از مهم ترین این ابزارها اشکان دژاگه یا Git هست.
Git: مغز متفکر پشت پروژه های نرم افزاری
Git یه سیستم کنترل نسخه (Version Control System) قدرتمنده که بهت کمک می کنه تا تمام تغییرات کد منبع پروژهت رو به طور دقیق و منظم ردیابی کنی.
فرض کن یه تیم از برنامه نویس ها دارن یه پروژه بزرگ رو توسعه میدن. هر کدوم از اعضای تیم ممکنه به طور مستقل روی یه قسمت از کد کار کنن. بدون وجود Git مدیریت این تغییرات و جلوگیری از ایجاد تداخل بین کدها خیلی پیچیده و دشوار خواهد بود.
Git با ذخیره سازی تمام تغییرات کد بهت اجازه میده که به راحتی به نسخه های قبلی برگردی یا تغییرات مختلف رو با هم مقایسه کنی. هر تغییر در Git با یه Commit ثبت میشه و یه پیام توضیحی هم به اون اضافه میشه که محتوای تغییر رو شرح میده.
چرا Git برای تو مهم است؟
- مدیریت تغییرات: هر تغییر در کد رو با جزئیات ذخیره میکنه.
- همکاری تیمی: به تیم programmers اجازه میده که به طور همزمان روی یه پروژه کار کنن بدون ایجاد تداخل.
- برگشت به نسخه های قبلی: در صورت ایجاد خطا یا نیاز به برگشت به نسخه های قبلی به راحتی میتونی به نسخه دلخواه برگردی.
- مقایسه تغییرات: میتونی تغییرات کد رو در نسخه های مختلف مقایسه کنی و تغییر های مورد نظرت رو پیگیری کنی.
- حفاظت از کد: تمام تغییرات کد در Git ذخیره میشه و در صورت اتفاق خطا میتونی به نسخه های قبلی برگردی.
Git از کجا اومد؟
Git در سال ۲۰۰۵ توسط لینوس توروالدز خالق سیستم عامل لینوکس برای مدیریت کد منبع پروژه لینوکس ساخته شد.
از اون موقع به بعد Git به محبوب ترین سیستم کنترل نسخه در جهان تبدیل شد و در میان برنامه نویس ها و تیم های توسعه نرم افزار به طور وسیعی استفاده میشه.
گیت با تو چه کار میکنه؟
Git بهت کمک میکنه که پروژه هات رو به طور منظم و کارآمد مدیریت کنی. در حقیقت Git مثل یه مغز متفکر برای پروژه هات عمل میکنه و تمام جزئیات تغییرات کد رو ذخیره میکنه.
Git یک دایرکتوری مخفی به نام .git در ریشه پروژه ایجاد میکنه و تمام تغییرات کد رو در این دایرکتوری ذخیره میکنه.
Git چطور کار میکنه؟
Git یک سیستم محلی است یعنی تمام تغییرات کد در کامپیوتر تو ذخیره میشه. اما Git همچنین به تو اجازه میده که نسخه های کد رو در یه سرور مرکزی نیز ذخیره کنی. این سرور مرکزی به نام Remote repository شناخته میشه و به تیم programmers اجازه میده که به طور همزمان روی پروژه کار کنن.
Git چطور کار میکنه؟
- ابتدا یک repository (مخزن) ایجاد میشه که تمام کد پروژه در اون ذخیره میشه.
- بعد از اینکه کد تغییر کرد تغییرات با command git add به Staging Area اضافه میشه. Staging Area مثل یه مخزن موقت است که تغییرات رو قبل از ثبت در repository ذخیره میکنه.
- بعد از اضافه کردن تغییرات به Staging Area با command git commit میتونی تغییرات رو ثبت کنی. Commit یه snapshot از کد در یه زمان خاص است.
- Git تمام Commit ها رو به صورت یه history (تاریخچه) ذخیره میکنه. این history به شما اجازه میده که به هر نسخه از کد در هر زمان برگردید.
- Git همچنین branch ها (شاخه ها) رو پشتیبانی میکنه. Branch به شما اجازه میده که به طور مستقل روی یه بخش از کد کار کنی و بدون تداخل با بقیه کد تغییرات رو ثبت کنی.
- Branch ها به شما اجازه میدن که ویژگی های جدید رو به صورت مستقل توسعه بدین و بعد از تکمیل تغییرات رو به main branch اضافه کنید.
- Git امکان Merge (ادغام) شاخه ها رو نیز فراهم میکنه. با Merge میتونی تغییرات یه شاخه رو به شاخه دیگه اضافه کنی.
Git چه ابزار های مفیدی دارد؟
Git ابزار های مفیدی برای مدیریت نسخه ها و همکاری تیمی فراهم میکنه. در ادامه به برخی از مهم ترین command ها Git اشاره میشه:
- git init: برای ایجاد repository جدید.
- git add: برای اضافه کردن تغییرات به Staging Area.
- git commit: برای ثبت تغییرات در repository.
- git status: برای مشاهده وضعیت repository.
- git log: برای مشاهده history Commit ها.
- git branch: برای ایجاد و مدیریت branch ها.
- git checkout: برای انتخاب و تغییر branch .
- git merge: برای ادغام branch ها.
- git pull: برای دریافت آخرین تغییرات از Remote repository.
- git push: برای ارسال تغییرات به Remote repository.
Git چطور با همکاری تیمی همخوانی دارد؟
Git به طور ویژه برای همکاری تیمی طراحی شده است و به تیم های programmers اجازه میده که به صورت همزمان روی پروژه کار کنن بدون اینکه کد شون با هم تداخل داشته باشه.
Git امکان Branching (شاخه سازی) رو فراهم میکنه که به programmers اجازه میده که به طور مستقل روی بخش های مختلف کد کار کنن. هر programmers میتونه یه شاخه جدید ایجاد کنه و تغییرات رو در اون شاخه ثبت کنه. بعد از تکمیل تغییرات میتونه شاخه رو به شاخه اصلی Merge کنه.
Git چطور با GitHub ارتباط دارد؟
Git یک سیستم کنترل نسخه محلی است اما GitHub یه پلتفرم آنلاین برای ذخیره سازی و مدیریت repository های Git است.
GitHub به شما اجازه میده که repository های Git رو به صورت آنلاین ذخیره کنی با دیگران همکاری کنی و از امکانات اضافی مثل issue tracking و pull request استفاده کنی.
Git و workflow های توسعه نرم افزار
Git به طور وسیعی در workflow ها توسعه نرم افزار استفاده میشه. برخی از محبوب ترین workflow ها که از Git استفاده میکنن :
- Git Flow: یه workflow منظم و قابل اعتماد برای مدیریت branch ها و توسعه نرم افزار.
- GitHub Flow: یه workflow ساده و کارآمد برای توسعه نرم افزار.
- Trunk Based Development: یه workflow که بر توسعه مستقیم در شاخه اصلی تمرکز میکنه.
Git از کجا یاد بگیریم؟
- آموزش های آنلاین: سایت های زیادی وجود دارن که آموزش های رایگان و پرداختي درباره Git ارائه میدن.
- کتاب های آموزش Git: چندین کتاب خوب درباره Git وجود دارن که میتونی از اونها استفاده کنی.
- فیلم های آموزش Git: در YouTube فیلم های آموزش رایگان درباره Git وجود دارن.
- سایت GitHub: GitHub مستندات کامل و آموزش های رایگان درباره Git ارائه میده.
- GitHub Desktop: GitHub یک client desktop نیز ارائه میده که به شما اجازه میده که به راحتی با Git کار کنی.
Git و ابزار های مفید دیگه:
- GitHub: یه پلتفرم آنلاین برای ذخیره سازی و مدیریت repository های Git.
- GitLab: یه پلتفرم آنلاین مشابه GitHub برای ذخیره سازی و مدیریت repository های Git.
- Bitbucket: یه پلتفرم آنلاین مشابه GitHub و GitLab برای ذخیره سازی و مدیریت repository های Git.
- SourceTree: یه client desktop برای Git که به شما اجازه میده که به راحتی با Git کار کنی.
- GitKraken: یه client desktop برای Git که به شما اجازه میده که به راحتی با Git کار کنی.
Git چطور بهت کمک میکنه که یه برنامه نویس حرفه ای بشی؟
Git بهت کمک میکنه که یه برنامه نویس حرفه ای بشی چون به تو اجازه میده که کد هات رو به طور منظم و کارآمد مدیریت کنی و با تیم programmers به طور همزمان روی یه پروژه کار کنی.
همچنین Git به تو کمک میکنه که کد هات رو به طور مستمر بهبود بدی و از خطا ها و مشکلات جلوگیری کنی.
با یادگیری Git میتونی در هر تیمی که توسعه نرم افزار انجام میده شرکت کنی و به طور موثر با programmers دیگه همکاری کنی.
Git و دپلویمنت
Git به طور مستقیم با دپلویمنت ارتباط نداره. دپلویمنت به فرآیند منتقل کردن کد از محیط توسعه به محیط تولید اشاره میکنه.
اما Git به شما کمک میکنه که کد رو به طور منظم و کارآمد مدیریت کنی و نسخه های مختلف کد رو به راحتی مقایسه کنی. این موارد در فرآیند دپلویمنت بسیار مفید هستن.
Git به شما کمک میکنه که نسخه ای از کد رو که باید دپلویمنت بشه به درستی انتخاب کنی و با اطمینان آن رو به محیط تولید منتقل کنی.
Git و مراحل دپلویمنت
Git به طور مستقیم در مراحل دپلویمنت دخیل نیست. اما میتونه در مدیریت کد و انتخاب نسخه ای که باید دپلویمنت بشه نقش مهمی داشته باشه.
به عنوان مثال :
- توسعه کد: در این مرحله شما با Git کد رو مدیریت میکنید و تغییرات رو ثبت میکنید.
- تست کد: در این مرحله شما با استفاده از branch ها میتونی تست های خودت رو انجام بدی و تغییرات رو بدون تداخل با کد اصلی ثبت کنی.
- دپلویمنت کد: در این مرحله شما با استفاده از Git میتونی نسخه ای از کد رو که باید دپلویمنت بشه انتخاب کنی.
- Rollback کد: در صورت ایجاد خطا در دپلویمنت شما با استفاده از Git میتونی به راحتی به نسخه قبلی برگردی.
Git و مدیریت dependencies
Git به طور مستقیم با مدیریت dependencies ارتباط نداره.
اما میتونه در مدیریت کد و انتخاب نسخه ای از کد که باید دپلویمنت بشه نقش مهمی داشته باشه.
Dependency به محدوده ای از کد اشاره میکنه که برای اجرای کد پروژه لازم است.
Git میتونه به شما کمک کنی که نسخه ای از کد رو انتخاب کنی که دارای dependencies مناسب برای دپلویمنت است.
Git و CI/CD
CI/CD به فرآیند continuous integration و continuous delivery اشاره میکنه.
CI/CD به شما کمک میکنه که کد رو به طور خودکار تست کنی دپلویمنت کنی و به روز کنی.
Git با CI/CD به طور مستقیم ارتباط نداره.
اما میتونه در مدیریت کد و انتخاب نسخه ای از کد که باید دپلویمنت بشه نقش مهمی داشته باشه.
Git به شما کمک میکنه که نسخه ای از کد رو انتخاب کنی که برای اجرای CI/CD مناسب است.
Git و Security
Git به طور مستقیم با Security ارتباط نداره.
اما میتونه در مدیریت کد و انتخاب نسخه ای از کد که باید دپلویمنت بشه نقش مهمی داشته باشه.
Git به شما کمک میکنه که نسخه ای از کد رو انتخاب کنی که از نظر Security مناسب است.
همچنین Git میتونه به شما کمک کنی که تغییرات کد رو ردیابی کنی و در صورت ایجاد مشکل Security به نسخه قبلی برگردی.
Git و versioning
Git یک سیستم کنترل نسخه است.
Git تمام تغییرات کد رو به صورت version ذخیره میکنه.
شما میتونی به راحتی به نسخه های قبلی برگردی و تغییرات رو مقایسه کنی.
Git به شما کمک میکنه که تاریخچه توسعه کد رو ردیابی کنی و در صورت ایجاد خطا به نسخه قبلی برگردی.
Git و CI/CD
CI/CD به فرآیند continuous integration و continuous delivery اشاره میکنه.
CI/CD به شما کمک میکنه که کد رو به طور خودکار تست کنی دپلویمنت کنی و به روز کنی.
Git با CI/CD به طور مستقیم ارتباط نداره.
اما میتونه در مدیریت کد و انتخاب نسخه ای از کد که باید دپلویمنت بشه نقش مهمی داشته باشه.
Git به شما کمک میکنه که نسخه ای از کد رو انتخاب کنی که برای اجرای CI/CD مناسب است.
Git و Docker
Docker یه ابزار برای ساخت و اجرای container ها است.
Container یه محیط مجازی است که اپلیکیشن رو با تمام dependencies اش ذخیره میکنه.
Git با Docker به طور مستقیم ارتباط نداره.
اما میتونه در مدیریت کد و انتخاب نسخه ای از کد که باید دپلویمنت بشه نقش مهمی داشته باشه.
Git به شما کمک میکنه که نسخه ای از کد رو انتخاب کنی که برای ساخت و اجرای Docker container مناسب است.
Git و Kubernetes
Kubernetes یه ابزار برای مدیریت container ها است.
Git با Kubernetes به طور مستقیم ارتباط نداره.
اما میتونه در مدیریت کد و انتخاب نسخه ای از کد که باید دپلویمنت بشه نقش مهمی داشته باشه.
Git به شما کمک میکنه که نسخه ای از کد رو انتخاب کنی که برای دپلویمنت در Kubernetes مناسب است.
Git و DevOps
DevOps یه فرهنگ و مجموعه ای از ابزار ها برای اتصال تیم های توسعه و عملیات است.
DevOps به شما کمک میکنه که کد رو به طور خودکار تست کنی دپلویمنت کنی و به روز کنی.
Git یه ابزار مهم در DevOps است.
Git به شما کمک میکنه که کد رو به طور منظم و کارآمد مدیریت کنی و با تیم های توسعه و عملیات به طور موثر همکاری کنی.
Git و Continuous Delivery
Continuous Delivery یه فرآیند برای دپلویمنت کد به صورت خودکار است.
Git یه ابزار مهم در Continuous Delivery است.
Git به شما کمک میکنه که کد رو به طور منظم و کارآمد مدیریت کنی و نسخه ای از کد رو که باید دپلویمنت بشه انتخاب کنی.
همچنین Git به شما کمک میکنه که تغییرات کد رو ردیابی کنی و در صورت ایجاد خطا به نسخه قبلی برگردی.
نتیجه گیری
با یادگیری Git میتونی به یه برنامه نویس حرفه ای تبدیل بشی و پروژه هات رو به طور مؤثر مدیریت کنی. Git مثل یه مغز متفکر برای پروژه هات عمل میکنه و تمام جزئیات تغییرات کد رو ذخیره میکنه. با استفاده از Git میتونی به راحتی با دیگران همکاری کنی نسخه های قبلی کد رو بازیابی کنی خطا ها رو به سرعت برطرف کنی و پروژه هات رو با کیفیت بالا به انجام برسونی.
سوالات متداول
1. Git چگونه با versioning سیستم های دیگه مثل SVN مقایسه میشه؟
Git یه سیستم کنترل نسخه توزیع شده است در حالی که SVN یه سیستم کنترل نسخه مرکزی است.
در Git هر programmers یک کپی کامل از repository رو در کامپیوتر خودش دارد. این موضوع به programmers اجازه میده که بدون نیاز به اتصال به سرور مرکزی با کد کار کنن.
در SVN programmers باید به سرور مرکزی اتصال داشته باشن تا با کد کار کنن.
Git به طور کلی سریع تر و انعطاف پذیرتر از SVN است.
2. Git چطور به برنامه نویس ها کمک میکنه که با هم همکاری کنن؟
Git امکان branching رو فراهم میکنه که به programmers اجازه میده که به طور مستقل روی بخش های مختلف کد کار کنن.
همچنین Git امکان merge رو فراهم میکنه که به programmers اجازه میده که تغییرات رو به شاخه اصلی اضافه کنن.
3. Git چطور به برنامه نویس ها کمک میکنه که خطا ها رو برطرف کنن؟
Git تمام تغییرات کد رو به صورت version ذخیره میکنه.
شما میتونی به راحتی به نسخه های قبلی برگردی و تغییرات رو مقایسه کنی.
این موضوع به شما کمک میکنه که خطا ها رو به سرعت برطرف کنی.