این آزمون هر چهار بخش دورهی Git را با ۳۳ سؤال سناریویی میسنجد. بعد از هر پاسخ، جواب درست و توضیح را میبینی و نتیجهی نهایی در پیشرفت من ذخیره میشود. نمرهی ۲۷ از ۳۳ یا بیشتر یعنی آمادهای در یک تیم واقعی با Git کار کنی؛ پایینتر از آن، درسهایی را که سؤالهایشان را غلط زدی مرور کن. قدم بعدی دورهی Docker و بعد Nginx است.
؟ آزمون پایانی دورهی Git
GitHub یک ماه از دسترس خارج است. با کلونهایی که دارید چه کارهایی هنوز ممکن است؟
هر کلون تاریخچهی کامل دارد.
در git status -s خط «MM app.py» یعنی چه؟
برای ثبت آخرین ویرایش باید دوباره add کنی.
user.email را هم در ~/.gitconfig و هم در .git/config گذاشتهای؛ داخل آن مخزن کدام استفاده میشود؟
local ← global ← system.
کدام پیام commit بهتر است؟
عنوان کوتاه، فعل امری، چه چیزی.
کدام دستور آنچه با commit بعدی ثبت میشود را نشان میدهد؟
git diff پوشهی کاری را با staging مقایسه میکند.
میخواهی بدانی چه commit ای متن «timeout=30» را برای اولین بار اضافه کرده. کدام؟
blame فقط آخرین تغییر هر خط را میدهد.
پس از git reset --hard HEAD~2 میفهمی دو commit لازم بودند. چه میکنی؟
فقط commit های ثبتشده برمیگردند، نه تغییر commit نشده.
یک commit را push کردهای و دیگران گرفتهاند؛ اشتباه بوده. بهترین کار؟
reset و amend تاریخچه را بازنویسی میکنند.
فایل .env را بعد از commit شدن به .gitignore اضافه کردی. چه میشود؟
.gitignore فقط روی فایلهای untracked اثر دارد.
main بعد از جداشدن feature هیچ commit جدیدی ندارد. git merge feature چه میکند؟
با --no-ff میشود commit ادغام را اجباری کرد.
conflict را حل کردهای. قدم بعد؟
add یعنی «حل شد».
در ادغام، git checkout --ours فایل نسخهی کدام شاخه را میآورد؟
theirs = شاخهی ادغامشده.
قانون طلایی rebase؟
rebase شناسهها را عوض میکند.
سه commit «wip» را میخواهی یکی کنی. در rebase تعاملی؟
اولین خط باید pick بماند.
فایل جدید (untracked) داری و میخواهی با بقیهی تغییرها کنار بگذاری. کدام؟
پیشفرض stash فقط فایلهای دنبالشده را میگیرد.
پروژهات 2.3.1 است. یک باگ سازگار را درست میکنی. نسخهی بعد؟
باگفیکس PATCH؛ ویژگی MINOR؛ ناسازگار MAJOR.
tag ساختهای ولی همکارت آن را نمیبیند. چرا؟
git ls-remote --tags origin نشان میدهد.
push تو با «rejected (fetch first)» رد شد. بهترین کار؟
force کار همکارها را پاک میکند.
ssh -T git@github.com با «Connection timed out» تمام میشود. محتملترین علت و راهحل؟
Permission denied (publickey) یعنی به سرور رسیدهای ولی کلیدت شناخته نشد.
کدام فایل را به GitHub میدهی؟
کلید خصوصی را هرگز به کسی نده.
مخزن GitHub را با README ساختهای و پروژهی محلی با تاریخچهی خودت داری؛ git pull چه میگوید؟
بهتر: مخزن خالی بساز یا clone کن.
برگهی «Files changed» یک PR معادل کدام دستور است؟
فقط تغییرهای خود شاخه را نشان میدهد.
در «Squash and merge» با PR ای که ۵ commit دارد؟
rebase and merge: ۵ commit خطی؛ merge commit: ۵ + ادغام.
پیام «feat(api)!: remove v1 endpoints» در Conventional Commits نسخه را چطور بالا میبرد؟
feat معمولی MINOR، fix PATCH.
چرا hook های `.git/hooks` برای اعمال قاعدهی تیمی کافی نیستند؟
core.hooksPath مشکل نصب را کم میکند.
در workflow ی GitHub Actions اولین step معمولاً «uses: actions/checkout@v4» است. چرا؟
هر job روی ماشین تازه شروع میشود.
چرا ${{ github.event.pull_request.title }} را نباید مستقیم داخل run: بگذاری؟
actionlint هشدار میدهد.
شاخهای را با git branch -D پاک کردهای. چطور برمیگردانی؟
تا وقتی gc اجرا نشده یا reflog منقضی نشده.
رفع باگ را فقط به شاخهی انتشار v1.0 میخواهی (بدون ویژگیهای نیمهتمام main). کدام؟
merge همهی تغییرها را میآورد.
git bisect run ./test.sh چه میکند؟
بعدش git bisect reset.
چهار نوع شیء Git؟
blob = محتوا، tree = پوشه.
چرا «بازنویسی تاریخچه» (amend، rebase) در واقع commit جدید میسازد؟
تغییر یک commit شناسهی فرزندانش را هم عوض میکند.
در پروژهی تیمی، چرا بعد از حل conflict حتماً تست اجرا میکنی؟