گیت به انگلیسی؛ commit, pull request و merge بدون تصادف
گیت، گرامرِ کارِ تیمی است و جملههایش ثابتاند: I'll create a branch, open a PR, address the comments, and merge. سختترین لحظهاش هم جمله دارد: "I have a merge conflict — could you help me resolve it?" این درس، دیکشنریِ گفتاریِ گیت را میسازد — از clone تا squash.
اگر تا حالا گیت را تنها استفاده میکردی، جملههایش را «نمیدیدتی»؛ اما در تیم، گیت زنده حرف میزند: در اسلک، در استندآپ، در ریلویو. و اشتباههای گیت — کنفلیکت، فورسپوش، ریبِیسِ اشتباه — وقتی زبان نداشته باشی، بهجای «پشیمانیِ فنی» به «وحشتِ زبانی» تبدیل میشوند.
این درس فقط لحنِ گفتاری را میدهد (دستورِ گیت که خودت بلدی یا help میگیرد): فعلِ درست برای هر عمل، اسمهای محاورهای (PR, repo, main), و جملههای پیش apologize. ریلویویِ کامل، درسِ بعدی است؛ این درس زیرساختِ گفتاریاش.
فعلهای گیت؛ دیکشنریِ روزانه
| عمل | فعلِ گفتاری | جمله |
|---|---|---|
| repo را کپی کردن | clone | Clone the repo and run the setup script. |
| شاخهٔ جدید | branch off / create a branch | I'll branch off main for this feature. |
| ثبتِ تغییر | commit | Committed the fix — small, focused commit. |
| گرفتنِ تغییرِ دیگران | pull | Pull main before you start — it moved. |
| فرستادن | push | Just pushed — can you take a look? |
| درخواستِ ادغام | open a PR | I opened a PR — it's ready for review. |
| دیدگاهها را اعمالکردن | address the comments | Addressed your comments and pushed again. |
| ادغام | merge | Merged! The feature is on staging. |
| ادغامِ فشرده | squash and merge | Let's squash — 14 commits is too noisy. |
| برگشتن | revert / roll back | We reverted the release — back to normal. |
اسمهای محاوره: repo (ریپازیتوری), main (شاخهٔ اصلی — قبلاً master), PR (pull request; در GitLab: MR = merge request), diff (اختلافِ نسخهها), conflict (تعارض), commit history (تاریخچه). و ادبِ فنی: اسمِ شاخه را معنادار بگذار و در پیامِ اسلک بگو: "PR is up: feature/checkout-v2 — small one, ~200 lines."
Pull Request؛ پستِ مرکزیِ گفتگو
قالبِ توضیحِ PR (که آدمها را دوستت میکند): What & Why: "Adds retry logic to the payment client." · How: "Uses exponential backoff, capped at 5 tries." · Testing: "Covered with unit tests; deployed to staging and ran a manual charge." · Notes: "Diff looks big, but half of it is a generated file." — همین چهار خط، نصفِ سوالهای ریلویور را قبل از پرسیدن جواب میدهد. و درخواستِ ریلویوی محترمانه: "Could you review when you get a chance? Not urgent — by EOD would be great."
وقتی خراب شد؛ جملههای پیشآپدیجیِ گیت
کنفلیکت: "I have a merge conflict with main — could you pair with me for five minutes? I don't want to break the release." فورسپوشِ اشتباه: "Heads-up: I force-pushed to the shared branch by accident — I'm fixing it now, sorry!" (Heads-up = توجه — کلمهٔ نجاتِ اعلامِ خرابی) برگشتنِ فوری: "Can we revert the last commit on main? It broke the build." لاگِ گمشده: "Does anyone know where yesterday's commits went? I can't find the branch." — همهٔ این جملهها با آرامشِ صریح گفته میشوند؛ در فرهنگِ تیمهای سالم، اعلامِ سریعِ خرابی، امتیاز است: "I'd rather flag it early than let it spread."
گرامرِ عمیقتر: فعلهای PR و مجهولِ گیت
گیت، زبانِ مجهولِ مسئول است: The PR was reviewed by two engineers (PR توسطِ دو مهندس ریلویو شد), The build got broken (بیلد خراب شد — get + قسم برای «اتفاقِ ناخوشایند»). فعلهای چرخه: open / update / rebase / merge / revert / close — و مخففهای گفتاری: WIP (work in progress — در حالِ کار: a WIP PR), PTAL (please take another look), LGTM, NIT. و جفتهای خائنِ لحن: "I pushed" (من پوش کردم — خبرِ عادی) در برابرِ "It got pushed" (پوش شد — خبرِ رخداده!).
گفتگو: کنفلیکت و درخواستِ کمک
اشتباههای رایجِ فارسیزبانها در همین درس
این بخش را با یک قرارداد بخوان: هر ❌ یعنی «مغزِ فارسیزبانت این را میسازد و طبیعی است»، و هر ✅ یعنی «این همان چیزی است که گیرندهٔ انگلیسیزبان میشنود». خطاها اثرِ مستقیمِ ترجمهٔ ذهنیِ فارسی به انگلیسیاند؛ با هر جفت بلند تکرار کن تا شکلِ درست در گوشت نشست کند.
تمرینهای این درس — چهار قدم، بیعجله
گیتِ گفتاری را با جملهٔ کامل تمرین کن — انگار پیامِ اسلکِ تیم را همین حالا مینویسی.
- پیامِ چهارخطیِ PR را بساز برای «افزودنِ retry به کلاینتِ پرداخت»: What & Why / How / Testing / Notes.
- اصلاح کن: "I opened pull request for merge my feature. We have conflict between branches."
- جملههای خرابی را بگو: فورسپوشِ اشتباهی به شاخهٔ اشتراکی — اعلام + عذرخواهی + اقدام.
- جای خالی: «I'll ___ off main, then open a PR and ___ your comments before we merge.»
پاسخ تمرینها — اول خودت جواب بده، بعد باز کن
پاسخ تمرین ۱
پاسخ تمرین ۲
پاسخ تمرین ۳
پاسخ تمرین ۴
چالشِ امروز
🎯 در پیامِ کاریِ بعدیات سه فعلِ این درس را در جایِ درست بگذار — branch off، open a PR، address the comments — و اگر کنفلیکتی در کار است با مالکیتِ خودت اعلامش کن؛ گفتارِ درستِ گیت، اولین روزِ حرفهایات را امن میکند.
نکات مکالمهٔ واقعی که کتابها کم میگویند
- اعلامِ خرابی با heads-up — هر خرابیِ گیت با heads-up + اقدام: «Heads-up: I force-pushed by accident — fixing now.» — اعلامِ سریع، نصفِ جِرم نیست؛ تمامِ حرفهایبودن است.
- PR کوچک را قربانی کن — PRِ بزرگ را خودت اسپلیت کن قبل از درخواستِ ریلویو — «small PRs get reviewed today; big ones get reviewed someday.»
- diff را قبل از درخواست بخوان — قبل از درخواستِ ریلویو، خودت رویِ diff پُلریکوئستت را ریلویو کن — کامنتِ «هووم، این چرا آمد؟» را خودت جواب بده؛ ریلویوِ خود، نصفِ ریلویویِ دیگران است.
گیت گفتاری: branch off / commit / pull / push / open a PR / address comments / squash and merge / revert. PR با چهار خطِ What-How-Testing-Notes. خرابی با heads-up + sorry + درخواستِ help. جملهٔ امنیتیِ هر جا: "I don't want to break the release" — نشانِ مهندسِ مسئول، در هر زبانی.