سوالات مصاحبه استخدامی برنامه نویس GIT

درباره Git توضیح دهید و مشخص کنید چه تفاوتی با سایر سیستم‌های کنترل نسخه دارد؟نرم‌افزار Git یک سیستم کنترل نسخه توزیع‌شده است که برای ردیابی تغییرات در پروژه‌های توسعه نرم‌افزار استفاده می‌شود. برخلاف سیستم‌های کنترل نسخه متمرکز، Git به چندین توسعه‌دهنده اجازه می‌دهد تا به‌طور هم‌زمان روی یک پروژه کار کنند و هرکدام کپی مخصوص به خود را از کل مخزن دارند. این بدان معناست که حتی اگر مخزن مرکزی از کار بیفتد، توسعه‌دهندگان می‌توانند به کاربر روی نسخه‌های محلی خود ادامه دهند.مزایای استفاده از Git چیست؟نرم‌افزار Git دارای چندین مزیت نسبت به سایر سیستم‌های کنترل نسخه است، ازجمله:• توسعه توزیع‌شده: Git به توسعه‌دهندگان این امکان را می‌دهد که روی نسخه‌های محلی خود از یک مخزن کار کنند و همکاری با دیگران و کار روی چندین پروژه به‌طور هم‌زمان را آسان‌تر می‌کند.• انشعاب و ادغام آسان: Git به توسعه‌دهندگان اجازه می‌دهد تا شاخه‌های جدیدی را برای ویژگی‌ها، رفع اشکال یا آزمایش ایجاد کنند و سپس به‌راحتی آن‌ها را در شاخه اصلی ادغام کنند.• عملکرد سریع: Git به‌گونه‌ای طراحی‌شده است که سریع و کارآمد باشد، حتی با مخازن بزرگ یا گردش کار پیچیده.• گردش کار انعطاف‌پذیر: Git از طیف گسترده‌ای از گردش کارها، از متمرکز گرفته تا توزیع کامل، پشتیبانی می‌کند و می‌تواند متناسب با نیازهای هر پروژه سفارشی شود.درباره git repository توضیح دهید؟مخزن Git مجموعه‌ای از فایل‌ها و دایرکتوری‌ها است که توسط Git مدیریت می‌شوند. این شامل تمام فایل‌هایی است که یک پروژه را تشکیل می‌دهند و همچنین اطلاعاتی درباره تاریخچه تغییرات ایجادشده در آن فایل‌ها.تفاوت بین git clone و git fork چیست؟یک git clone یک کپی از یک مخزن در ماشین محلی شما ایجاد می‌کند، درحالی‌که یک git fork یک کپی از یک مخزن در یک سرور راه دور ایجاد می‌کند، معمولاً در یک پلت فرم میزبان کد مانند GitHub. هنگامی‌که یک مخزن را شبیه‌سازی می‌کنید، یک کپی کامل از مخزن شامل تمام تاریخچه و شاخه‌های آن دریافت می‌کنید. هنگامی‌که یک مخزن را فورک می‌کنید، یک کپی از پایگاه کد مخزن دریافت می‌کنید، اما یک کپی از تاریخچه یا شاخه‌های آن دریافت نمی‌کنید.درباره Git branch توضیح دهید؟یک Git branch یک خط توسعه جداگانه در یک مخزن Git است. توسعه‌دهندگان می‌توانند شاخه‌های جدیدی برای کاربر روی ویژگی‌ها، رفع اشکال یا آزمایش‌ها بدون تأثیر بر شاخه اصلی ایجاد کنند. پس از تکمیل یک شاخه، می‌توان آن را دوباره به شاخه اصلی ادغام کرد.تفاوت بین git merge و git rebase چیست؟دستورات git merge و git rebase دو راه برای ادغام تغییرات از یک شاخه به شاخه دیگر هستند. git merge یک ادغام commit جدید ایجاد می‌کند که تغییرات شاخه منبع و شاخه هدف را ترکیب می‌کند git rebase کل شاخه منبع را به نوک شاخه هدف منتقل می‌کند و یک تاریخچه خطی ایجاد می‌کند.زیر ماژول Git چیست؟یک زیر ماژول Git یک مخزن Git جداگانه است که در یک مخزن والد تعبیه‌شده است. زیر ماژول‌ها به توسعه‌دهندگان این امکان را می‌دهند که پروژه‌های دیگر را به‌عنوان وابستگی در پروژه‌های خود بگنجانند. هنگامی‌که یک مخزن را با زیر ماژول‌ها کلون می‌کنید، Git مخازن زیر ماژول‌ها را نیز کلون می‌کند.درباره Git hook توضیح دهید؟یک git hook اسکریپتی است که به‌طور خودکار در پاسخ به یک رویداد Git خاص اجرا می‌شود، مانند انجام تغییرات یا push دادن به یک مخزن راه دور. از git hook ها می‌توان برای اجرای استانداردهای کد نویسی، اجرای تست‌های خودکار یا راه‌اندازی اسکریپت‌های استقرار استفاده کرد.دربارهGit bisect توضیح دهید؟یکGit bisect ابزاری است که می‌توان از آن برای یافتن commit استفاده کرد که باگ یا رگرسیون را در تاریخچه پروژه ایجاد کرده است. با انجام یک جستجوی دودویی در تاریخچه commit، بررسی commit های مختلف و درخواست از کاربر برای تعیین وجود اشکال در هر یک کار می‌کند.درباره Git stash توضیح دهید و مشخص کنید که چگونه کار می‌کند؟یکGit stash دستوری است که به توسعه‌دهندگان این امکان را می‌دهد تا به‌طور موقت تغییرات را در فهرست کاری خود ذخیره کنند بدون اینکه آن‌ها را به مخزن commit کنند. این می‌تواند هنگام کاربر روی چندین شاخه مفید باشد یا زمانی که باید به‌سرعت به یک کار دیگر تغییر دهید. برای استفاده از Git stash، به‌سادگی دستور "git stash" را اجرا کنید که تغییرات شما را ذخیره می‌کند و دایرکتوری کاری شما را به آن بازمی‌گرداند.درباره Git cherry-pick توضیح دهید؟دستور Git cherry-pick دستوری است که به توسعه‌دهندگان اجازه می‌دهد تا یک commit خاص را از یک شاخه به شاخه دیگر اعمال کنند. این می‌تواند زمانی مفید باشد که نیاز به رفع اشکال یا ویژگی از یک شاخه به شاخه دیگر، بدون ادغام کل شاخه دارید.درباره Git rebase تعاملی توضیح دهید؟دستور Git rebase interactive راهی برای ویرایش و سفارش مجدد تعهدات در تاریخچه یک شعبه است. این به توسعه‌دهندگان اجازه می‌دهد تا قبل از ادغام شدن در شاخه اصلی، تعهدات را حذف، ویرایش و یا مرتب نمایند.درباره Git reflog توضیح دهید و مشخص کندی در چه صورتی مفید است؟دستور Git reflog دستوری است که تاریخچه همه مراجع Git ازجمله commit ها، شاخه‌ها و تگ‌ها را حتی اگر حذف‌شده باشند نمایش می‌دهد. می‌تواند برای بازیابی commit ها یا شاخه‌های ازدست‌رفته یا حذف‌شده مفید باشد.درباره Git subversion توضیح دهید و مشخص کنید چه تفاوتی با Git دارد؟یک Git subversion یک افزونه Git است که به توسعه‌دهندگان اجازه می‌دهد از Git برای کار با مخازن Subversion استفاده کنند. Subversion یک سیستم کنترل نسخه متمرکز است، درحالی‌که Git توزیع‌شده است. Git subversion به توسعه‌دهندگان این امکان را می‌دهد تا از ویژگی‌های قدرتمند Git مانند شاخه بندی و ادغام با مخازن Subversion استفاده کنند.درباره Git LFS توضیح دهید و مشخص کنید چرا استفاده می‌شود؟یک Git LFS (Large File Storage) یک پسوند Git است که به توسعه‌دهندگان اجازه می‌دهد فایل‌های باینری بزرگ را در مخازن Git مدیریت کنند. این کار با ذخیره فایل‌های باینری در خارج از مخزن Git و جایگزینی آن‌ها با نشانگرهای موجود در مخزن کار می‌کند و باعث کوچک‌تر و سریع‌تر کار کردن مخزن می‌شود.درباره Git blame توضیح دهید و مشخص کنید چگونه استفاده می‌شود؟دستور Git blame دستوری است که نویسنده و آخرین تاریخ اصلاح هر خط در یک فایل و همچنین پیام commit hash و commit را برای تغییر نمایش می‌دهد. می‌توان از آن برای ردیابی نویسنده یک تغییر خاص یا درک تاریخچه یک فایل استفاده کرد.درباره Git revert توضیح دهید و مشخص کنید چه تفاوتی با Git reset دارد؟دستور Git revert دستوری است که یک commit جدید ایجاد می‌کند که تغییرات ایجادشده توسط commit قبلی را لغو می‌کند. برای لغو تغییرات بدون بازنویسی تاریخچه Git استفاده می‌شود. از سوی دیگر، بازنشانی گیت برای بازنشانی شاخه فعلی به یک commit خاص یا حذف تغییرات استفاده می‌شود.درباره Git bisect run توضیح دهید و مشخص کنید چگونه استفاده می‌شود؟دستور Git bisect run دستوری است که به توسعه‌دهندگان اجازه می‌دهد تا فرآیند یافتن یک باگ را با استفاده از Git bisect خودکار کنند. این به توسعه‌دهندگان اجازه می‌دهد تا اسکریپتی بنویسند که هر commit را به‌طور خودکار آزمایش می‌کند و وضعیت موفقیت یا شکست را برمی‌گرداند.درباره Git stash pop توضیح دهید و مشخص کنید چه تفاوتی با Git stash application دارد؟دستور Git stash pop دستوری است که آخرین stash را بازیابی کرده و آن را از فهرست ذخیره حذف می‌کند. از سوی دیگر، Git stash application، stash را در فهرست ذخیره باقی می‌گذارد و اجازه می‌دهد بعداً دوباره اعمال شود.درباره Git remote توضیح دهید و مشخص کنید چگونه از آن استفاده می‌شود؟دستور Git remote دستوری است که به توسعه‌دهندگان اجازه می‌دهد تا مخازن راه دوری را که یک مخزن Git به آن متصل است مدیریت کنند. می‌توان از آن برای افزودن یا حذف مخازن راه دور، تغییر نام آن‌ها یا مشاهده اطلاعات مربوط به آن‌ها استفاده کرد. معمولاً هنگام همکاری با توسعه‌دهندگان دیگر در یک پروژه استفاده می‌شود.