सवाल एक साथ कई भंडारों के लिए गिट पुश [डुप्लिकेट]


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

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

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

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

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


76
2017-11-23 12:10


मूल


क्या यह आपकी ज़रूरतों को पूरा करेगा? - klang
दिलचस्प है कि डुप्लिकेट प्रश्न / उत्तर खोजने में लगभग 4 साल लग गए - g19fanatic


जवाब:


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

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

[remote "all"]
    url=ssh://user@server/repos/g0.git
    url=ssh://user@server/repos/g1.git

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


119
2017-11-23 12:18



रिमोट "हैक" शायद वह है जो मैं ढूंढ रहा था। (यह फिर से परिभाषित नहीं है git push -> git push origin HEAD उपनाम लेकिन वह चीज करता है जो मैं चाहता हूं।) में .git/config एक बार कई जोड़ सकते हैं urlएस के लिए एस remote। धन्यवाद। - Kissaki
मेरे लिए कुछ काम नहीं कर रहा है: stackoverflow.com/questions/15273040/... - ripper234
महान वहाँ @ g19fanatic। यह आकर्षण की तरह काम करता है :) - d3r1ck
यह विशेष है - cambunctious
क्या होगा अगर दो रिपो के पास एक ही उपयोगकर्ता नाम (ईमेल) के लिए अलग पासवर्ड है? - MASh


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

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

git config --add remote.all.url ssh://user@server/repos/g0.git
git config --add remote.all.url ssh://user@server/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

संदर्भ


52
2017-09-05 13:24



इस उत्तर के लिए धन्यवाद। मैंने बस इसे सेट अप किया है और शायद यह ध्यान देने योग्य है कि मुझे एसआरएस: // यूआरएल में छोड़ने की जरूरत है (मैं बिटबकेट और ब्लूहोस्ट का उपयोग कर रहा हूं) इसलिए मेरा गिट कॉन्फ़िगर कमांड इस तरह दिखता है: git config --add दूरस्थ। all.url user@server/repos/g0.git - MatthewLee
अतिरिक्त जानकारी: पहला git config -add बाद में एक रिच और पुश रिमोट बना देगा git config -add केवल एक पुश रिमोट बना देगा। - Paul Verschoor
मुझे खेद है, विंडोज उपयोगकर्ता आपकी स्वचालित स्क्रिप्ट का उपयोग कैसे कर सकते हैं? धन्यवाद। - Саша Черных
@ СашаЧерных कोशिश करें विंडोज़ पर बैश - Édouard Lopez
@ ÉdouardLopez: विंडोज़ पर बैश के समय मेरे पास विंडोज 10 एलटीएसबी है एलटीएसबी का समर्थन नहीं करते हैं। धन्यवाद। - Саша Черных


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

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

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


0
2018-03-03 15:15