به عنوان یک مهندس DevOps، یادگیری مفاهیم اصلی گیت بسیار ضروری است. در این وبلاگ، در مورد گیت برای DevOps و اینکه چرا گیت یک مهارت مهم برای یک مهندس DevOps است صحبت خواهم کرد. همچنین منابع مرتبط برای یادگیری صحیح گیت را فهرست کردهام.
گیت (Git) چیست؟
گیت یک سیستم کنترل نسخه توزیعشده متنباز است. بسیار سبک است و تقریباً روی همه سیستمعاملها کار میکند.
در سال ۲۰۰۵، لینوس توروالدز گیت را به عنوان یک سیستم کنترل نسخه توزیعشده ایجاد کرد، زمانی که تیم توسعه هسته لینوکس دیگر نمیتوانست از BitKeeper به صورت رایگان استفاده کند.
اکنون، گیت سیستم کنترل نسخه بالفعل مورد استفاده توسعهدهندگان در سراسر جهان است. ماهیت توزیعشده آن، توسعه، پیگیری و همکاری خوب با تغییرات کد را آسان میکند.
نتایج نظرسنجی توسعهدهندگان StackOverflow که در زیر نشان داده شده است، نشان میدهد که ۹۳٪ از مهندسان از گیت استفاده میکنند و این یک ابزار اساسی برای آنهاست.

وقتی صحبت از گیت میشود، بیشتر زبانآموزان جدید امروزی به گیتهاب اشاره میکنند.
پلتفرمهایی مانند گیتهاب یا بیتباکت بر پایه گیت ساخته شدهاند و قابلیتهای اضافی دارند که به مهندسان و سازمانها کمک میکند تا کد را در مخزن گیت از راه دور میزبانی و کنترل نسخه کنند. همچنین، این پلتفرم با ادغامهای خوبی برای کار با سایر ابزارهای CI/CD متنباز ارائه میشود.
با GitHub Actions، میتوانید کل خط لوله CI/CD را با استفاده از خود پلتفرمهای گیتهاب و گیتلب راهاندازی کنید. این امر نیاز به مدیریت چندین ابزار برای CI/CD را از بین میبرد.
گیت برای Devops
بیایید به عوامل کلیدی نیاز به گیت برای DevOps نگاهی بیندازیم.
۱. برای داشتن بحثهای معنادار CI/CD با توسعهدهندگان
یکی از وظایف یک مهندس DevOps طراحی و توسعه خطوط لوله CI/CD است. گیت نقش کلیدی در CI/CD ایفا میکند. از تجربه کار در شرکتهای مختلف میتوانم بگویم که هیچ استاندارد واحدی برای شاخهبندی و گردش کار گیت وجود ندارد. گاهی اوقات، شما باید با توسعهدهندگان بنشینید و در مورد رویکرد صحیح برای شاخهبندی گیت در خط لوله CI/CD بحث کنید. این شامل برچسبگذاری گیت، نسخهبندی انتشار و غیره میشود.
در واقع، در اکثر سازمانها، مهندسان DevOps مالک و گرداننده مخازن گیت هستند.
بنابراین، برای داشتن یک بحث معنادار با تیمهای توسعه، باید دانش خوبی از گیت داشته باشید.
۲. برای زیرساخت به عنوان کد
همچنین، وقتی در مورد زیرساخت به عنوان کد صحبت میکنیم، تمام کدهای زیرساخت را در گیت توسعه و نگهداری میکنیم. چه یک خط لوله جنکینز، چه یک کتاب راهنمای Ansible یا یک ماژول Terraform باشد.
ما با کد infra همانطور رفتار میکنیم که با کد برنامه رفتار میشود. یعنی، کد infra قبل از استقرار در هر محیطی، از همان تست واحد و تستهای یکپارچهسازی عبور میکند.
یعنی حتی کد زیرساخت نیز باید یک خط لوله CI/CD داشته باشد. این دوباره به گردشهای کاری مبتنی بر git تبدیل میشود.
اکثر شرکتها برای کد infra از توسعه مبتنی بر تست پیروی نمیکنند، اما این روش استاندارد توسعه کد زیرساخت است.
3. Gitops
با شیوههای فنی مانند GitOps، git به عنوان منبع حقیقت برای تمام پیکربندیهای زیرساخت عمل میکند.
با Gitops، هرگونه تغییر در پیکربندیهای مخزن git در زیرساخت مستقر میشود.
بنابراین ضروری است که مهندسان DevOps همه چیز را در مورد git بدانند.
همچنین، ابزارهایی مانند ArgoCD کل گردشهای کاری پیرامون تمرین gitOps را دارند.
نقشه راه یادگیری Git
در اینجا نقشه راه نحوه یادگیری git آمده است.
| Topic | Resource |
|---|---|
| Understand Version Control System | What is a version control system |
| Understand Distributed Version Control | What is distributed Version Control |
| Git Installation | Official Git Website Downloads |
| GUI Clients | Git GUI Clients |
| Git basics | Git basics Videos |
| Fundamental of Git | Guided git tutorial |
| Advanced Git | Atlassian Advanced Git Tutorial |
بهترین منابع برای یادگیری گیت چیست؟
اگر به دنبال دورههای آموزشی برای یادگیری گیت هستید، من بهترین منابع زیر را برای یادگیری صحیح گیت انتخاب کردهام.
- راهنمای گیت و کنترل نسخه [دوره تعاملی آموزشی]
- کنترل نسخه با گیت [دوره رایگان یوداسیتی]
- گیت کامل: راهنمای قطعی و گام به گام گیت [یودمی]
- کنترل نسخه با گیت [دوره رایگان یوداسیتی]
سوالات مصاحبه گیت دواپس
وقتی صحبت از سوالات مصاحبه دواپس میشود، بیشتر در مورد سناریوهای عملی است. بنابراین بیشتر سوالات مصاحبه گیت دواپس بر اساس سناریوهای بلادرنگ پروژه خاصی است که برای آن مصاحبه میشوید.
شما میتوانید با استفاده از منابعی که در بالا ذکر کردم، در مورد قابلیتهای عمومی گیت اطلاعات کسب کنید. شما باید بتوانید به تمام سوالات عمومی گیت پاسخ دهید.
با این حال، اگر تجربه کار با گیت در پروژههای بلادرنگ را ندارید، من یک راه حل برای شما دارم.
به تگ گیت استکاورفلو بروید و موضوعات خاص گیت را مرور کنید. به عنوان مثال، گیت ریبیس. این باید بسیاری از سناریوها و مسائلی را که مردم با آن روبرو هستند، همانطور که در تصویر زیر نشان داده شده است، در زمان واقعی (real-time) مطرح کند.

اطلاعات زیادی به دست خواهید آورد که میتواند در مصاحبهها به شما کمک کند.
جای دیگری که میتوانید به دنبال آن باشید، Reddit Git است. در اینجا نیز میتوانید مکالمات زیادی در مورد گیت پیدا کنید که برای یادگیری و مصاحبه مفید خواهد بود.
در ادامه مفاهیم مهم گیت که باید برای مصاحبههای DevOps یاد بگیرید، آمده است.
| Basic Git Concepts | Other Concepts |
| 1. Branching 2. Merging 3. Commits 4. Git Tagging 5. Pull Requests 6. Gitignore 7. Git Web Hooks 8. Forks 9. detached HEAD 10. Checkout a specific commit 11. Large File Handling 12. Managing Secrets and Sensitive Information 13. Remote Branches and Collaboration |
1. Rebasing 2. Cherry Picking 3. Squashing 4. Stashing |
| Undetstand The Differences | For CI/CD |
| 1. Git Vs Github 2. git merge Vs git rebase 3. git pull vs fetch 4. git revert vs reset 5. Stashing and Checkouts 6. Submodules and Subtrees |
Git Workflows Trunk based development Feature Driven Development |
نتیجهگیری
گیت یک سیستم کنترل نسخه ساده است، اما ابزارهای قدرتمندی در اطراف گیت برای اتوماسیون DevOps وجود دارد.
پس از یادگیری اصول اولیه، بهتر است مخازن کد خود را ایجاد کنید و تمام ویژگیهای پیشرفته گیت را امتحان کنید. برای حفظ دانش، میتوانید تمام عملکردهای گیت را که آموختهاید در یک مخزن گیت مستند کنید.