मुझे सभी उप-निर्देशिकाओं से वर्तमान शाखा से खींचने के लिए एक बढ़िया समाधान मिला है। जिनके पास एक .गित फ़ोल्डर है, भले ही प्रत्येक रेपो की एक अलग शाखा हो। कमांड एक-लाइनर है, जो विभिन्न गिट कमांड के लिए संशोधित करने के लिए पर्याप्त लचीला है, और इसे अलियास किया जा सकता है।
बस निम्नलिखित को कॉपी और पेस्ट करें:
find . -type d -maxdepth 2 -name .git -exec sh -c 'cd $0 && cd .. && git pull origin $(git rev-parse --abbrev-ref HEAD)' {} \;
इसे तोड़कर:
find . -type d -maxdepth 2 -name .git
वर्तमान निर्देशिका में सभी निर्देशिका (-type d) ढूंढें (ढूंढें।) जिसका नाम ".git" (.name) (-गीत) है, अधिकतम दो निर्देशिकाओं को गहराई से देख रहा है (2 के बजाय 1) क्योंकि हम खोज रहे हैं। git रेपो फोल्डर के अंदर git फोल्डर)।
-exec sh -c
निम्नलिखित शेल कमांड चलाएं (निष्पादन श-सी)
'cd $0 && cd .. && git pull origin $(git rev-parse --abbrev-ref HEAD)'
निर्देशिका को पहले तर्क में बदलें (सीडी $ 0), फिर निर्देशिका को एक स्तर तक बदल दें। .it फ़ोल्डर (cd ..) को छोड़ने के लिए फिर git को मूल-पार्स चलाकर शाखा को निर्दिष्ट करते हुए मूल खींचते हैं ... वर्तमान शाखा के लिए ... हेड कमिट।
{} \;
"{}" परिणामी पथ है जो हमें प्रारंभिक खोज कमांड से मिलता है । ; कमांड को समाप्त करने के लिए उपयोग किया जाता है।
ZOS पर MacOS 10.14.6 पर परीक्षण किया गया। जैसा कि, केवल तभी काम करता है जब दूरस्थ और स्थानीय शाखाओं को एक ही नाम दिया जाता है, AFAIK।
आप स्थिति प्राप्त करने के लिए इसे संशोधित कर सकते हैं। मुझे उम्मीद है कि आप इसे और अधिक लचीला बनाने के लिए तर्क जोड़ने में सक्षम हो सकते हैं लेकिन मैंने अभी तक कोशिश नहीं की है।
hg mercurial
।