عن المشروع

# manygit — مدير Git متعدد المستودعات عبر سطر الأوامر manygit هي أداة CLI واحدة تقدم واجهة طرفية بأسلوب lazygit لشجرة كاملة من مستودعات Git. وجّهها إلى مجلد، وستظهر كل المستودعات الموجودة تحته على شاشة واحدة، مع عرض الفرع وما إذا كان متقدمًا أو متأخرًا أو معدلًا. يمكنك الجلب، السحب، الدفع، أو تبديل الفروع على المستودع المحدد، بالإضافة إلى عرض رسم الالتزامات، تشغيل السكربتات، وتصفح طلبات السحب على GitHub (عند تثبيت أداة `gh`). على عكس أدوات التشغيل الجماعي مثل `gita` أو `mani`، لا يوجد ملف إعدادات لتسجيل المستودعات ولا مخرجات تحتاج لقراءتها: manygit تكتشفها بمسح المجلد، وتبقى في القائمة. ## الميزات الرئيسية - **اكتشاف تلقائي**: يفحص مجلدًا (العمق الافتراضي 3) بحثًا عن مستودعات git ويجمعها حسب المجلد الأصلي. - **عرض حالة موحد**: رؤية الفرع، عدد المتقدم/المتأخر، الحالة المعدلة، والمستودعات المحلية فقط في لمحة واحدة. - **إجراءات مباشرة**: مزامنة (جلب + سحب سريع للأمام)، دفع، تبديل الفروع، تجاهل التغييرات (مع تأكيد)، جلب مستودع واحد أو الكل. - **رسم الالتزامات**: عرض ملء الشاشة لتاريخ الالتزامات. - **مشغل السكربتات**: تعريف وتشغيل سكربتات عبر المستودعات. - **لوحة طلبات السحب على GitHub**: تعرض طلبات السحب المفتوحة وطلبات المراجعة (تتطلب أداة `gh`)، مع تبديل فرع طلب السحب بمفتاح واحد. - **Git بلغة بسيطة**: اكتب طلبات مثل "rebase current onto master" وتحولها أداة ذكاء اصطناعي إلى أوامر git لتأكيدها. - **صدفة داخل المستودع**: فتح موجه صدفة دائم في المستودع المحدد لتشغيل أوامر عشوائية. - **تصفية**: تصفية المستودعات بالاسم أو الفرع أو الوسم؛ عرض المستودعات ذات التغييرات/المتقدمة/المتأخرة فقط. - **سمات**: عدة سمات ألوان (default, serika_dark, dracula, nord, catppuccin, 8008). - **تحديث ذاتي**: محدث مدمج مع عرض سجل التغييرات. ## التثبيت **لينكس** ```bash curl -fsSL https://raw.githubusercontent.com/rabeeh-ta/manygit/main/install.sh | bash ``` **ماك** ```bash brew tap rabeeh-ta/manygit && brew trust rabeeh-ta/manygit && brew install manygit ``` **ويندوز (PowerShell)** ```powershell irm https://raw.githubusercontent.com/rabeeh-ta/manygit/main/install.ps1 | iex ``` طرق أخرى: `go install github.com/rabeeh-ta/manygit@latest` (Go 1.24+)، أو البناء من المصدر. حدد إصدارًا معينًا بتمرير الوسم للمثبت (مثل `bash -s -- v1.0.7`). ## الاستخدام ```bash manygit # فحص المجلد الحالي manygit --root ~/work # فحص مجلد محدد manygit stats # طباعة إحصائيات التنزيل من GitHub ``` ## اختصارات المفاتيح (ملخص) - `1`-`7`: تركيز اللوحات (المستودعات، السكربتات، الفروع، طلبات السحب، الرسم، التغييرات، المخرجات) - `j`/`k`: التنقل داخل اللوحة المركزة - `enter`: حسب السياق (عرض الفروع، تبديل، تشغيل سكربت، تبديل فرع طلب سحب) - `s`/`p`: مزامنة (جلب + سحب سريع للأمام) / دفع المستودع المحدد - `d`/`D`: تجاهل التغييرات (المتتبعة فقط / أيضًا غير المتتبعة) - `f`/`r`: جلب واحد / إعادة جلب الكل - `g`: رسم الالتزامات بملء الشاشة - `n`: موجز أخبار بملء الشاشة (عناوين ملخصة بالذكاء الاصطناعي) - `t`: تبديل عرض أحدث وسم - `F`: تصفية إلى المستودعات ذات التغييرات/المتقدمة/المتأخرة - `/`: تصفية القوائم (المستودعات تطابق الاسم والفرع؛ الفروع تطابق الاسم؛ السكربتات تطابق الاسم) - `:`: أوامر git بلغة بسيطة عبر أداة الذكاء الاصطناعي - `!`: فتح صدفة في المستودع المحدد - `o`: فتح المستودع في المحرر - `z`: تكبير اللوحة المركزة - `esc`: الرجوع طبقة واحدة من الحالة - `?`: طبقة المساعدة (الاختصارات والإعدادات) - `q` أو `esc esc`: الخروج ## الإعدادات إعدادات اختيارية في `~/.config/manygit/config.yml`: ```yaml max_depth: 3 # المجلدات تحت الجذر للبحث (1-5) open_cmd: code # أمر المحرر للمفتاح `o` theme: default # default | serika_dark | dracula | nord | catppuccin | 8008 status_glyphs: unicode # أو "ascii" ``` ## الأمان - manygit لا يكتب أبدًا في مجلد الإطلاق. - بمفرده، لا يدفع بقوة أبدًا، ولا يدمج، ولا يعيد الأساس؛ `s` هو جلب + سحب سريع للأمام فقط، و`p` هو دفع عادي. - الإجراء التدميري الوحيد الذي يقدمه بمفرده هو تجاهل التغييرات (`d`/`D`)، والذي يطلب التأكيد دائمًا. - صدفة `!` وأوامر `:` الذكاء الاصطناعي هي استثناءات مقصودة، مع ضمانات: تُعرض الأوامر قبل التشغيل، ويُنفذ git بقوائم وسائط (بدون أنابيب صدفة)، وتُرفض العلامات الخطيرة. ## الإصدارات (للمشرف) ادفع وسم إصدار (مثل `git tag v0.2.0 && git push origin v0.2.0`) — تبني GitHub Actions الملفات الثنائية وتنشر الإصدار؛ يلتقطه المثبت والمحدث الذاتي تلقائيًا. تصبح ملاحظات الإصدار سجل التغييرات داخل التطبيق. ## جرّبه عبر الإنترنت نسخة عاملة من الواجهة تعمل على [الصفحة الرئيسية](https://rabeeh-ta.github.io/manygit/) — git وهمي، لكن المفاتيح حقيقية.