इस प्रोजेक्ट के बारे में

# manygit — एक मल्टी-रिपॉजिटरी Git CLI प्रबंधक manygit एक एकल CLI टूल है जो git रिपॉजिटरी के पूरे **ट्री** में lazygit-शैली का टर्मिनल UI लाता है। इसे किसी फ़ोल्डर पर इंगित करें, और नीचे की हर रिपॉजिटरी एक स्क्रीन पर दिखाई देती है, जिसमें उसकी शाखा और यह दिखता है कि वह आगे, पीछे या गंदी है। आप हाइलाइट की गई रिपॉजिटरी पर fetch, pull, push, या शाखा बदल सकते हैं, साथ ही कमिट ग्राफ़ देख सकते हैं, स्क्रिप्ट चला सकते हैं, और GitHub पुल रिक्वेस्ट ब्राउज़ कर सकते हैं (जब `gh` CLI स्थापित हो)। `gita` या `mani` जैसे बैच रनर के विपरीत, रिपॉजिटरी पंजीकृत करने के लिए कोई कॉन्फ़िग फ़ाइल नहीं है और पढ़ने के लिए कोई आउटपुट नहीं है: manygit फ़ोल्डर को चलकर उन्हें खोजता है, और आप सूची में बने रहते हैं। ## मुख्य विशेषताएँ - **स्वचालित खोज**: git रिपॉजिटरी के लिए एक फ़ोल्डर (डिफ़ॉल्ट गहराई 3) स्कैन करता है और उन्हें पैरेंट निर्देशिका द्वारा समूहित करता है। - **एकीकृत स्थिति दृश्य**: शाखा, आगे/पीछे की संख्या, गंदी स्थिति, और केवल-स्थानीय रिपॉजिटरी एक नज़र में देखें। - **प्रत्यक्ष क्रियाएँ**: सिंक (fetch + fast-forward pull), push, शाखा checkout, परिवर्तन छोड़ें (पुष्टि के साथ), एक या सभी रिपॉजिटरी fetch करें। - **कमिट ग्राफ़**: कमिट इतिहास का पूर्ण-स्क्रीन विज़ुअलाइज़ेशन। - **स्क्रिप्ट रनर**: रिपॉजिटरी में स्क्रिप्ट परिभाषित और चलाएँ। - **GitHub PR पैन**: आपके खुले PR और समीक्षा अनुरोध सूचीबद्ध करता है (`gh` CLI आवश्यक), PR की शाखा के एक-कुंजी checkout के साथ। - **सरल अंग्रेज़ी git**: "rebase current onto master" जैसे अनुरोध टाइप करें और एक AI हार्नेस उन्हें आपकी पुष्टि के लिए git कमांड में बदल देता है। - **इन-रिपो शेल**: मनमाने कमांड चलाने के लिए हाइलाइट की गई रिपॉजिटरी में एक स्थायी शेल प्रॉम्प्ट खोलें। - **फ़िल्टरिंग**: रिपॉजिटरी को नाम, शाखा, या टैग द्वारा फ़िल्टर करें; केवल परिवर्तन/आगे/पीछे वाली रिपॉजिटरी दिखाएँ। - **थीम**: कई रंग थीम (default, serika_dark, dracula, nord, catppuccin, 8008)। - **स्व-अद्यतन**: चेंजलॉग प्रदर्शन के साथ अंतर्निहित अपडेटर। ## स्थापना **Linux** ```bash curl -fsSL https://raw.githubusercontent.com/rabeeh-ta/manygit/main/install.sh | bash ``` **macOS** ```bash brew tap rabeeh-ta/manygit && brew trust rabeeh-ta/manygit && brew install manygit ``` **Windows (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`: पैन फ़ोकस करें (Repos, Scripts, Branches, PRs, Graph, Changes, Output) - `j`/`k`: फ़ोकस किए गए पैनल में जाएँ - `enter`: संदर्भ-निर्भर (शाखाएँ देखें, checkout करें, स्क्रिप्ट चलाएँ, PR शाखा checkout करें) - `s`/`p`: हाइलाइट की गई रिपॉजिटरी सिंक (fetch + ff-pull) / push करें - `d`/`D`: परिवर्तन छोड़ें (केवल ट्रैक किए गए / अनट्रैक किए गए भी) - `f`/`r`: एक fetch करें / सभी फिर से fetch करें - `g`: पूर्ण-स्क्रीन कमिट ग्राफ़ - `n`: पूर्ण-स्क्रीन समाचार फ़ीड (AI-सारांशित शीर्षक) - `t`: नवीनतम टैग प्रदर्शन टॉगल करें - `F`: परिवर्तन/आगे/पीछे वाली रिपॉजिटरी में फ़िल्टर करें - `/`: सूचियाँ फ़िल्टर करें (रिपॉजिटरी नाम और शाखा से मेल खाती हैं; शाखाएँ नाम से; स्क्रिप्ट नाम से) - `:`: AI हार्नेस के माध्यम से सरल अंग्रेज़ी 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 लॉन्च फ़ोल्डर में कभी नहीं लिखता। - अपने आप में, यह कभी force-push, merge, या rebase नहीं करता; `s` fetch + fast-forward-only pull है, `p` सादा push है। - यह अपने आप जो एकमात्र विनाशकारी क्रिया प्रदान करता है वह परिवर्तन छोड़ना है (`d`/`D`), जो हमेशा पुष्टि माँगता है। - `!` शेल और `:` AI कमांड जानबूझकर अपवाद हैं, सुरक्षा उपायों के साथ: चलाने से पहले कमांड दिखाए जाते हैं, git तर्क सूचियों के साथ निष्पादित किया जाता है (कोई शेल पाइप नहीं), और खतरनाक फ़्लैग अस्वीकार किए जाते हैं। ## रिलीज़ (अनुरक्षक) एक संस्करण टैग पुश करें (जैसे, `git tag v0.2.0 && git push origin v0.2.0`) — GitHub Actions बाइनरी बनाता है और रिलीज़ प्रकाशित करता है; इंस्टॉलर और स्व-अपडेटर इसे स्वचालित रूप से उठाते हैं। रिलीज़ नोट्स इन-ऐप चेंजलॉग बन जाते हैं। ## ऑनलाइन आज़माएँ TUI का एक कार्यशील पोर्ट [लैंडिंग पेज](https://rabeeh-ta.github.io/manygit/) पर चलता है — git नकली है, लेकिन कुंजियाँ वास्तविक हैं।