git एक साथ कई भंडारों के लिए गिट पुश




version-control dvcs (3)

मुझे नहीं लगता कि आप इसे गिट पर ध्वज सेट करके कर सकते हैं, लेकिन आप एक कॉन्फ़िगरेशन फ़ाइल को संशोधित कर सकते हैं जो आपको मैन्युअल रूप से उन सभी को टाइप किए बिना एकाधिक रिमोट रिपॉजिटरीज़ को धक्का दे सकता है (अच्छी तरह से उन्हें केवल पहली बार टाइप करना और बाद में नहीं)

.git/config फ़ाइल में आप परिभाषित रिमोट में एकाधिक यूआरएल जोड़ सकते हैं:

[remote "all"]
    url=ssh://[email protected]/repos/g0.git
    url=ssh://[email protected]/repos/g1.git

यदि आप अब सभी को धक्का देते हैं तो आप सभी रिमोट यूआरएल को दबाते हैं।

इस प्रश्न का उत्तर यहां दिया गया है:

मैं न केवल origin बल्कि एक और रिमोट रिपोजिटरी को धक्का git push लिए git push कैसे बना सकता हूं?

चूंकि git push git push origin लिए केवल एक उपनाम है, क्या मैं एक बार में 2 रिमोट रिपॉजिटरीज़ को धक्का देने के लिए गिट पुश को उपनाम कर सकता हूं (केवल एक ही कमांड के साथ)?

मैं यहां एक गैर-गिट स्क्रिप्ट की तलाश नहीं कर रहा हूं लेकिन इसे अपने स्थानीय भंडार के लिए गिट में सेट करना चाहता हूं।

जब मैंने पोस्ट-पुश स्क्रिप्ट के साथ कोशिश की तो मैं असफल रहा।


कोई मैन्युअल संपादन नहीं

आप अलग-अलग यूआरएल के साथ git config --add remote.xyz.url का उपयोग करके कमांड लाइन से सीधे रिमोट शाखा (जैसे all ) में एकाधिक यूआरएल जोड़ सकते हैं:

git config --add remote.all.url ssh://[email protected]/repos/g0.git
git config --add remote.all.url ssh://[email protected]/repos/g1.git

पूरी तरह से स्वचालित

यदि आप बहुत आलसी हैं और कई बार कॉपी / पेस्टर यूआरएल नहीं लेते हैं, तो यह आपके लिए है:

function git-add-push-all() {
  while read -r name url method; do
    git config --add remote.all.url "$url"
  done < <(git remote -v | awk '!/^all/ && /push/')
}

git-add-push-all # from git (sub)directory

एक पूर्ण bashy स्क्रिप्ट संभव है (परीक्षण $name और $method ), लेकिन awk मीठा है और हर किसी के लिए प्यार है।

धक्का दें

फिर आप सभी रिमोट के साथ धक्का दे सकते हैं

git push all

संदर्भ


आप कॉन्फ़िगर किए गए रिमोट से यूआरएल भी प्राप्त कर सकते हैं:

for repo in g0 g1 ...
do
    git config --add remote.all.url `git config remote.$repo.url`
done

जहां g0, g1, ... आपके रिमोट के नाम हैं।





dvcs