المهارات

gh-stack: إدارة طلبات السحب المتراصة عبر GitHub CLI

استخدمه عندما يكون GitHub CLI v2.0+ موجودًا أصلًا وتحتاج إلى إدارة فروع متراصة وطلبات سحب. ثبّت امتداد gh-stack أولاً، ولا تشغّل gh stack init إلا بعد التأكيد لأنه ينشئ فرعًا.

Official source · gh-stack

Install

gh extension install github/gh-stack

لمن يناسب

gh-stack امتداد لـ GitHub CLI لإدارة الفروع المتراصة وطلبات السحب (Pull Request). يناسب من يستخدم GitHub CLI أصلًا ويحتاج إلى دفع مجموعة مرتبة من الفروع كـ stack واحدة. يذكر الملخص أيضًا أن تثبيت الامتداد يتطلب GitHub CLI v2.0+.

تذكر المادة أنه يمكن تثبيت gh-stack skill حتى يفهم وكيل ترميز بالذكاء الاصطناعي طلبات السحب المتراصة وسطر أوامر gh stack؛ لكن المقتطف يقول فقط «ثبّت ذلك skill» ولا يعطي أمر تثبيت ثانيًا، فلا تخترع مثبّتًا لم يظهر. لا تقدم المادة قائمة بمنتجات وكلاء؛ لا تعتبره ميزة حصرية لمحرر معيّن. صفحة الدليل الرسمية هي

https://github.com/github/gh-stack

أكمل أول محاولة في 3 دقائق

أمر التثبيت الرسمي هو هذا الأمر الوارد في المقتطف:

gh extension install github/gh-stack

الشرط المسبق: GitHub CLI موجود أصلًا على الجهاز، والإصدار يلبي v2.0+ المذكور في الملخص. يكتب هذا الأمر امتدادًا على الجهاز، فله آثار جانبية. أكّد أولاً أن المستودع والحساب الحاليين هما البيئة التي تريد تجريب الـ stack فيها، ثم نفّذ التثبيت.

تحقق منخفض المخاطر بعد التثبيت: لا تنشئ فرعًا فورًا. أكّد أولاً أن الأمر gh stack أصبح قابلاً للاكتشاف من CLI. تفسر المادة gh stack init بأنه «بدء stack جديدة وإنشاء أول فرع والانتقال إليه»؛ هذا يغيّر شجرة العمل، فاحصل على تأكيد قبل التشغيل:

gh stack init

إشارة النجاح: بعد التثبيت يتعرّف gh على الأمر الفرعي stack. إذا أكدت أنك تريد stack جديدة، يظهر بعد init الفرع الأول الجديد في المستودع الحالي، ويمكنك لاحقًا رؤية بيانات JSON الوصفية في .git/gh-stack غير المُلتزم. إذا أردت قراءة الدليل أولاً فقط، توقف عند نجاح التثبيت ولا تنفّذ init.

حالات الاستخدام

الحالة الأولى: بدء فرع متراص جديد. في مستودع ثُبّت فيه الامتداد، أكّد أنه يجوز تغيير الفروع ثم نفّذ gh stack init. تكتب المادة هذا بأنه إنشاء أول فرع والانتقال إليه. يذكر الملخص لاحقًا إضافة طبقات والدفع والعرض ثم إرسال مجموعة PR، لكن المقتطف لا يعطي الكتابة الكاملة لتلك الأوامر الفرعية اللاحقة. معيار إكمال هذه الحالة يتوقف عند «أُنشئ الفرع الأول وتم الانتقال إليه»؛ لا تكتب الدفع أو فتح PR كخطوات جاهزة للنسخ.

الحالة الثانية: التحقق من موضع بيانات الـ stack الوصفية لتعرف ماذا تنظر إليه بعد rebase متقطع. تقول المادة: بيانات الـ stack موجودة في .git/gh-stack، وهي JSON لا تُلتزم في المستودع وتسجل أي فروع تنتمي لأي stack وبأي ترتيب؛ حالة الـ rebase المتقطع تُحفظ على حدة في .git/gh-stack-rebase-state. هذا فحص للقراءة فقط: افتح هذين المسارين، وتأكد من وجود الملفين ومن أن JSON يتتبع ترتيب الفروع الحالي. لا تعدّل هذه الملفات يدويًا ما لم تعطِ الصفحة نفسها خطوات أخرى؛ المقتطف لا يعطي تنسيق تحرير.

حدود الاستخدام

يغطي الامتداد فقط إدارة الفروع المتراصة وطلبات السحب. البيانات الوصفية في .git/gh-stack ولا تدخل شجرة الإصدارات؛ حالة انقطاع rebase في .git/gh-stack-rebase-state. ينشئ init فرعًا وينتقل إليه؛ ليس أمر قراءة فقط.

لا تخترع أمر تثبيت skill لم يظهر في المقتطف، ولا تعامل إضافة الطبقات والدفع والعرض والإرسال الواردة في الملخص كقائمة أوامر فرعية معطاة أصلًا. لا تكتب المادة قائمة عملاء ولا كيفية الاستخدام خارج GitHub CLI. ما يتجاوز مواضع التثبيت وinit والبيانات الوصفية المكتوبة هنا خارج تغطية هذا الدليل.