
این واژهنامه، مفاهیم ضروری Git و GitLab را برای کاربری توضیح میدهد که میخواهد کد را ثبت، بازبینی، آزمایش و منتشر کند. تعریفها به یک مسیر عملی متصلاند تا هر اصطلاح فقط یک صفحه کوتاه و جدا از زمینه نباشد.
واژهنامه
Git چیست؟
سند محتوایی و SEO آرانیک
Git یک سیستم کنترل نسخه توزیعشده است که تغییرات فایلهای پروژه را ثبت میکند. با Git میتوانید ببینید چه چیزی تغییر کرده، نسخههای مختلف را مقایسه کنید و در صورت بروز مشکل به وضعیت قبلی برگردید.
Git چه مسئلهای را حل میکند؟
فرض کنید AI بخشی از برنامه را بازنویسی میکند و روز بعد متوجه میشوید قابلیت دیگری خراب شده است. اگر تغییرها با Git در Commitهای مشخص ثبت شده باشند، میتوانید Diff را ببینید، منشأ مشکل را پیدا کنید و تغییر نامناسب را برگردانید.
مفاهیم اصلی Git
Repository: پوشه پروژه همراه با تاریخچه Git؛
Commit: یک نقطه ثبتشده در تاریخچه؛
Branch: مسیر جداگانه برای توسعه؛
Merge: ترکیب تغییرات دو Branch؛
Clone: ساخت نسخه محلی از Repository؛
Push/Pull: فرستادن یا دریافت تغییرات از Remote.
تفاوت Git و GitLab
Git ابزار کنترل نسخه است. GitLab پلتفرمی برای میزبانی Repository، همکاری با Merge Request و اجرای CI/CD است. میتوانید Git را بدون GitLab استفاده کنید، اما GitLab بر پایه Git کار میکند.
مثال ساده
بهتر است تغییر پیشنهادی AI را در Branch جدا انجام دهید، آن را Commit کنید و پس از Test از طریق Merge Request وارد main کنید. این روش اثر هر تغییر را قابلردیابی میکند.
مطالب مرتبط
Repository چیست؟
Branch چیست؟
Commit چیست؟
چرا پروژههای AI به GitLab نیاز دارند؟
واژهنامه
Repository چیست؟
سند محتوایی و SEO آرانیک
Repository یا «مخزن» محلی است که فایلهای پروژه و تاریخچه تغییرات آن نگهداری میشوند. در پروژه Git، Repository فقط یک پوشه کد نیست؛ اطلاعات Commitها، Branchها و ارتباط آنها را نیز دارد.
Repository محلی و Remote
Local Repository: نسخهای که روی کامپیوتر شماست؛
Remote Repository: نسخه مرکزی روی سرویسی مانند GitLab که اعضای تیم تغییرات را با آن همگام میکنند.
دستور Clone یک نسخه محلی از Remote میسازد. Push تغییرات محلی را میفرستد و Pull تغییرات جدید را دریافت میکند.
Public یا Private؟
Repository عمومی برای همه قابلمشاهده است. Repository خصوصی فقط برای کاربران مجاز باز میشود. سورسکد داخلی، داده حساس و پروژه مشتری معمولاً باید Private باشند. خصوصیبودن جایگزین مدیریت Secret نیست؛ API Key و رمز نباید در هیچ Repository ثبت شوند.
Repository در پروژه AI
وقتی AI چند فایل را تغییر میدهد، Repository همراه با Commit و Branch مشخص میکند این تغییرها چه زمانی و در کدام مسیر وارد پروژه شدهاند. این سابقه برای عیبیابی بسیار مهم است.
مطالب مرتبط
Git چیست؟
Commit چیست؟
Merge Request چیست؟
آموزش راهاندازی GitLab در آرانیک
واژهنامه
Branch چیست؟
سند محتوایی و SEO آرانیک
Branch یا شاخه، مسیر جداگانهای در تاریخچه Git است که اجازه میدهد بدون تغییر مستقیم نسخه اصلی روی یک قابلیت یا اصلاح کار کنید.
مثال ساده
اگر AI صفحه پرداخت را بازنویسی میکند، تغییر را در Branchی مانند ai/payment-validation ثبت کنید. تا زمانی که Branch با main Merge نشده، نسخه اصلی دستنخورده میماند و میتوانید تغییر را Test و Review کنید.
Branch اصلی چیست؟
بسیاری از پروژهها Branch اصلی را main مینامند. این Branch معمولاً نماینده نسخه پایدارتر پروژه است و بهتر است با Protected Branch در برابر Push مستقیم محافظت شود.
گردش کار ساده
ساخت Branch از main؛
انجام تغییر و ثبت Commit؛
Push به GitLab؛
ساخت Merge Request؛
اجرای Pipeline و بازبینی؛
Merge در صورت موفقیت کنترلها.
آیا Branch خودش امنیت ایجاد میکند؟
خیر. Branch فقط تغییر را جدا میکند. امنیت به Ruleهای دسترسی، Pipeline، Review و مدیریت Token وابسته است.
مطالب مرتبط
Commit چیست؟
Merge Request چیست؟
کنترل کد AI در GitLab
واژهنامه
Commit چیست؟
سند محتوایی و SEO آرانیک
Commit یک مجموعه ثبتشده از تغییرات در تاریخچه Git است. هر Commit شناسه، نویسنده، زمان و پیام دارد و نشان میدهد پروژه در آن نقطه چه وضعیتی داشته است.
چرا Commit مهم است؟
Commitهای مشخص کمک میکنند:
تغییرات را با هم مقایسه کنید؛
منشأ Bug را پیدا کنید؛
یک تغییر را برگردانید؛
بفهمید چه کسی یا چه فرایندی تغییر را ثبت کرده؛
Merge Request را راحتتر بازبینی کنید.
Commit خوب چه ویژگی دارد؟
یک هدف روشن دارد، بیش از حد بزرگ نیست و پیام آن دلیل تغییر را توضیح میدهد. پیام fix stuff اطلاعات کمی میدهد؛ validate checkout amount before payment واضحتر است.
Commit در پروژه AI
AI ممکن است دهها فایل را همزمان تغییر دهد. پیش از Commit، تغییرها را مرور و به واحدهای منطقی تقسیم کنید. یک Commit عظیم، Review و Rollback را دشوار میکند.
Commit با Backup فرق دارد
تاریخچه Git جایگزین Backup کامل GitLab نیست. حذف Repository، خرابی Database یا ازبینرفتن سرور به برنامه Backup جداگانه نیاز دارد.
مطالب مرتبط
Git چیست؟
Branch چیست؟
Repository چیست؟
واژهنامه
Merge Request چیست؟
سند محتوایی و SEO آرانیک
Merge Request یا MR در GitLab پیشنهادی برای ادغام تغییرات یک Branch با Branch دیگر است. این صفحه Diff کد، توضیح تغییر، گفتگو، نتیجه Pipeline و وضعیت Approval را کنار هم قرار میدهد.
Merge Request چه کمکی میکند؟
تغییرات قبل از ورود به main دیده میشوند؛
بازبین میتواند روی خطوط کد نظر دهد؛
Pipeline به همان تغییر متصل میشود؛
تصمیم Merge و سابقه آن ثبت میشود؛
تعارض Branchها پیش از ادغام مشخص میشود.
آیا MR یعنی بازبینی انسانی اجباری؟
خیر. MR نقطه کنترل ایجاد میکند، اما اجباریبودن Approval به تنظیمات و Tier GitLab وابسته است. طبق مستند فعلی، Approval در GitLab Free اختیاری است و بهتنهایی مانع Merge نمیشود؛ Ruleهای اجباری پیشرفته در Premium و Ultimate در دسترساند.
MR برای کد تولیدشده با AI
در توضیح MR مشخص کنید کدام بخش با AI ساخته شده، چه Testهایی اضافه شده و ریسک تغییر چیست. نتیجه Lint، Test و Security Scan را همراه Diff بررسی کنید.
مطالب مرتبط
Branch چیست؟
Pipeline چیست؟
آیا AI جای Code Review انسانی را میگیرد؟
منبع
Merge request approvals – GitLab Docs
واژهنامه
CI/CD چیست؟
سند محتوایی و SEO آرانیک
CI/CD روشی برای خودکارکردن مسیر تغییر کد تا تست و انتشار است. هدف این است که تغییرها زود، مکرر و با بازخورد قابلاعتماد وارد فرایند شوند.
CI چیست؟
Continuous Integration یا یکپارچهسازی مداوم یعنی تغییرهای کوچک بهطور مرتب در Repository مرکزی ثبت شوند و کنترلهایی مانند Lint، Test و Build روی آنها اجرا شود. اگر مشکلی وجود داشته باشد، تیم زودتر متوجه میشود.
CD چیست؟
CD میتواند به دو مفهوم اشاره کند:
Continuous Delivery: نسخه پس از عبور از کنترلها آماده انتشار است، اما انتشار Production میتواند تأیید دستی داشته باشد.
Continuous Deployment: تغییر موفق بهصورت خودکار وارد Production میشود.
CI/CD در GitLab چگونه کار میکند؟
Pipeline در فایل .gitlab-ci.yml تعریف میشود. Jobها را GitLab Runner اجرا میکند. Stageها ترتیب کلی مانند Test، Build و Deploy را مشخص میکنند.
CI/CD برای کد AI
CI/CD جای بازبینی را نمیگیرد، اما اجازه میدهد هر تغییر AI با قواعد یکسان آزمایش شود. نتیجه فقط به کنترلهایی وابسته است که تعریف کردهاید؛ Pipeline ناقص میتواند کد مشکلدار را موفق اعلام کند.
مطالب مرتبط
Pipeline چیست؟
GitLab Runner چیست؟
کنترل کد AI در GitLab
منبع
CI/CD pipelines – GitLab Docs
واژهنامه
Pipeline چیست؟
سند محتوایی و SEO آرانیک
Pipeline مجموعهای از Jobهای خودکار است که در واکنش به رویدادی مانند Push، ساخت Merge Request، زمانبندی یا اجرای دستی شروع میشود. در GitLab، Pipeline معمولاً با فایل .gitlab-ci.yml تعریف میشود.
Job و Stage چه تفاوتی دارند؟
Job: یک کار مشخص مانند Lint، Unit Test یا Build؛
Stage: گروهی از Jobها در یک مرحله مانند test یا deploy.
Stageها معمولاً به ترتیب اجرا میشوند و Jobهای یک Stage میتوانند موازی باشند. شکست Job ممکن است ادامه Pipeline را متوقف کند.
چه کسی Job را اجرا میکند؟
GitLab Runner Job را روی ماشین، کانتینر یا محیط محاسباتی مناسب اجرا و نتیجه را به GitLab گزارش میکند.
Pipeline چه چیزی را تضمین میکند؟
فقط کنترلهایی را اجرا میکند که تعریف شدهاند. اگر Test مهمی وجود نداشته باشد یا Rule اشتباه باشد، سبزشدن Pipeline صحت کامل کد را تضمین نمیکند.
نمونه مراحل
Lint → Unit Test → Integration Test → Security Scan → Build → Deploy
مطالب مرتبط
CI/CD چیست؟
Merge Request چیست؟
چرا پروژههای AI به GitLab نیاز دارند؟
منبع
CI/CD pipelines – GitLab Docs
واژهنامه
SSH Key چیست؟
سند محتوایی و SEO آرانیک
SSH Key یک جفت کلید عمومی و خصوصی برای احراز هویت است. کلید عمومی را میتوانید در GitLab ثبت کنید؛ کلید خصوصی باید فقط روی دستگاه شما و در محل امن باقی بماند.
با SSH Key میتوانید بدون واردکردن مداوم نام کاربری و رمز، عملیات Git مانند Clone، Pull و Push را انجام دهید.
ساخت کلید ED25519
GitLab در مستند فعلی ED25519 را ترجیح میدهد. در Terminal، PowerShell دارای OpenSSH یا Git Bash اجرا کنید:
ssh-keygen -t ed25519 -C "your-email@example.com"
مسیر ذخیره را تأیید و برای کلید Passphrase تعیین کنید. دو فایل ساخته میشود: فایل بدون .pub خصوصی است و فایل .pub عمومی.
افزودن به GitLab
محتوای فایل عمومی را کپی کنید.
وارد GitLab شوید.
از تنظیمات پروفایل به Access > SSH keys بروید.
گزینه افزودن کلید جدید را انتخاب کنید.
کلید عمومی، عنوان دستگاه و در صورت نیاز تاریخ انقضا را ثبت کنید.
آزمایش اتصال
ssh -T git@gitlab.example.com
در اولین اتصال، Fingerprint سرور را با منبع معتبر تطبیق دهید.
نکات امنیتی
Private Key را هرگز Upload یا ارسال نکنید؛
برای دستگاههای مختلف کلید جدا بسازید؛
Passphrase و تاریخ انقضا در نظر بگیرید؛
کلید دستگاه گمشده یا کاربر خارجشده را Revoke کنید.
مطالب مرتبط
آموزش راهاندازی GitLab در آرانیک
تنظیمات اولیه GitLab
منبع
Use SSH keys with GitLab – GitLab Docs
واژهنامه
Protected Branch چیست؟
سند محتوایی و SEO آرانیک
Protected Branch یا شاخه محافظتشده، Branchی است که GitLab برای آن مجوزهای ویژه Push، Merge، حذف و Force Push اعمال میکند. هدف، جلوگیری از تغییر مستقیم یا تصادفی شاخههای مهمی مانند main است.
کاربرد برای پروژه AI
ابزار AI یا Bot نباید بتواند کد را مستقیم وارد main کند. تغییر باید در Branch جدا ثبت، از Merge Request عبور و با Pipeline بررسی شود.
تنظیم مهم
برای جلوگیری از Push مستقیم، Allowed to push and merge را بهصراحت روی No one یا سطح محدود مناسب قرار دهید. مستند GitLab هشدار میدهد حالت «تنظیمنشده» را نباید معادل ممنوعیت فرض کرد.
سپس Allowed to merge را برای نقشهای مجاز تعیین کنید. Approval اجباری و Code Owner ممکن است به Tier GitLab وابسته باشند.
Protected Branch چه چیزی را تضمین نمیکند؟
کیفیت کد؛
موفقیت تستها، مگر Pipeline و Merge Check تنظیم شوند؛
بازبینی انسانی اجباری در همه Tierها؛
محدودبودن Tokenهای دارای دسترسی مدیریتی.
مطالب مرتبط
Branch چیست؟
Merge Request چیست؟
کنترل کد AI در GitLab
منبع
Protected branches – GitLab Docs
واژهنامه
Secret Detection چیست؟
سند محتوایی و SEO آرانیک
Secret Detection فرایندی برای پیدا کردن دادههای حساسی مانند API Key، Access Token، رمز و Private Key در Repository است. این اطلاعات نباید همراه سورسکد ذخیره یا منتشر شوند.
چرا مهم است؟
یک ابزار AI ممکن است هنگام ساخت نمونه کد، Secret واقعی را داخل فایل قرار دهد یا توسعهدهنده فایل .env را تصادفی Commit کند. پس از Push، هر فرد یا فرایند دارای دسترسی به Repository ممکن است آن Secret را ببیند.
Secret Detection چگونه کمک میکند؟
GitLab میتواند الگوهای شناختهشده Secret را در Pipeline یا هنگام Push بررسی کند. طبق مستند فعلی، قابلیتهای Secret Detection در Tierهای Free، Premium و Ultimate ارائه میشوند، اما جزئیات و حالتهای پیشگیری به نسخه و Tier وابستهاند.
اگر Secret پیدا شد چه کنیم؟
Secret را فوراً Revoke یا Rotate کنید.
استفاده مشکوک را در Log سرویس مقصد بررسی کنید.
Secret را از کد و تاریخچه لازم حذف کنید.
مقدار جدید را در Secret Manager یا CI/CD Variable امن نگه دارید.
علت افشا و کنترل پیشگیرانه را مستند کنید.
فقط حذف خط از آخرین Commit کافی نیست؛ Secret افشاشده باید نامعتبر شود.
محدودیت
اسکنر همه فرمتها و Secretهای سفارشی را نمیشناسد و ممکن است هشدار نادرست داشته باشد. مدیریت دسترسی و نگهداری Secret خارج از Repository همچنان ضروری است.
مطالب مرتبط
Pipeline چیست؟
Protected Branch چیست؟
کنترل کد AI در GitLab
منبع
Secret detection – GitLab Docs
پرسشهای متداول
برای شروع GitLab اول کدام مفاهیم را یاد بگیریم؟
از Repository، Commit و Branch شروع کنید؛ سپس Merge Request، Pipeline و Runner را یاد بگیرید و در پایان سراغ Protected Branch و Secret Detection بروید.
آیا Git و GitLab یک چیز هستند؟
خیر. Git سامانه کنترل نسخه است؛ GitLab بستری برای میزبانی Repository و مدیریت بازبینی، CI/CD، دسترسی و همکاری تیمی است.
کدام مفهوم مانع Push مستقیم به main میشود؟
Protected Branch با تنظیم صریح مجوز Push و Merge مسیر ورود تغییرها را محدود میکند؛ Merge Request و Pipeline کنترلهای تکمیلی این مسیر هستند.
منابع رسمی
قدم بعدی: برای تمرین این مفاهیم، سرویس GitLab را در داشبورد آرانیک بسازید.