2010-02-24 9 views
8

मैं अपने कोड की कई कामकाजी प्रतियों को बनाए रखने के लिए गिट का उपयोग करता हूं। विचार यह है कि मैं किसी भी शाखा को देख सकता हूं, यह देख सकता हूं कि शाखा की सुविधा एक्स कोड की वर्तमान स्थिति के साथ कैसे फिट बैठती है।गिट का उपयोग कर सभी शाखाओं में मास्टर से परिवर्तन विलय?

गिट की मास्टर शाखा ट्रंक है और अन्य गिट शाखाएं ऐसी विशेषताएं या चीजें हैं जिन्हें मैं आजमा देना चाहता हूं। इसलिए, मेरा सामान्य उपयोग मास्टर को नवीनतम सुधारों के साथ अद्यतन कर रहा है और फिर मास्टर को अलग-अलग शाखाओं में विलय कर रहा है, इसलिए उनमें से प्रत्येक अद्यतित रहता है।

इस प्रणाली मेरे लिए अच्छी तरह से काम करता है, तथ्य यह है मैं एक शाखा चेकआउट करने के लिए, मास्टर विलय और कुल्ला/अन्य शाखाओं के लिए दोहराने है के लिए छोड़कर। गिट जैसे संस्करण नियंत्रण प्रणाली को देखते हुए, मुझे इस स्केलिंग को बहुत अच्छी तरह से नहीं देखा गया है कि मैं समय के साथ कई शाखाओं को जन्म देने के लिए प्रवण हूं।

मैं अभी भी एक गिट शुरुआती हूं, इसलिए मुझे संदेह है कि वहां एक तंत्र हो सकता है जो कि पहले से ही है कि मैं गायब हो सकता हूं। क्या कोई है? यदि नहीं, तो कोई भी सभी शाखाओं में बदलाव कैसे करता है ताकि वे अपने आप पर अद्यतित रह सकें?

+0

इस प्रश्न का कोड कार्यान्वयन है? – edi9999

+0

नहीं, यह शुरुआत में काफी मैन्युअल प्रक्रिया थी। यह तब भी था जब मैं एक गिट शुरुआती था। अब मैं गिट फ्लो का उपयोग कर रहा हूं, जो बहुत समान है, लेकिन मुझे कई स्क्रिप्ट बनाए रखने की आवश्यकता नहीं है। – Carl

उत्तर

5

एक संभावना यह (अपने आप को परीक्षण नहीं) होगा:

  • एक नंगे रेपो जहाँ आप अपने गुरु शाखा धक्का कर सकते हैं स्थापित करने के लिए।
  • है कि नंगे रेपो जो तब हर "सुविधा" पर मास्टर धक्का रेपो आप
  • चाहते हैं पर (githooks man page देखें) एक के बाद प्राप्त हुक एक के बाद प्राप्त होता है शुरू करने के लिए सुविधा रेपो प्रति हुक:
    • मास्टर के शीर्ष पर आपकी फीचर शाखा का एक रिबेस (ठीक है अगर आपने अभी तक अपनी फीचर शाखा को कहीं और नहीं धक्का दिया है)
    • या अपनी फीचर शाखा पर मास्टर का विलय।

आप अभी भी अपनी सुविधा रेपो के लिए मिलता है और रिबेस अगर जाँच या मर्ज अवरुद्ध नहीं कर रहा है कुछ इस विलय के विरोध की वजह से की आवश्यकता होगी।

+0

हां, मुझे किसी विलय विवादों को मैन्युअल रूप से हल करने की आवश्यकता होगी। धन्यवाद। मुझे नहीं पता था कि हुक भी मौजूद थे। मेरे पास कुछ पढ़ने के लिए है: http://kernel.org/pub/software/scm/git/docs/githooks।एचटीएमएल – Carl

+0

@carleeto: अच्छा बिंदु, मैंने अपने जवाब में githooks मैन पेज लिंक जोड़ा है। – VonC

+0

ऐसा लगता है कि आप कई शाखाओं के बजाय एकाधिक भंडारों का सुझाव दे रहे हैं। – Abizern

4

तो

  1. शाखाओं जो आप और
  2. विलय करने के लिए नवीनतम मास्टर में प्रकाशित नहीं कर रहे हैं के लिए प्रतिबद्ध चाहते हैं आप मास्टर के सारे प्रतिबद्ध अन्य शाखाओं में

तो होना चाहते हैं आप मास्टर को अद्यतन करने के बाद बस उन्हें मास्टर पर रीबेज कर सकता है। यदि आप यूनिक्स शैल का उपयोग कर रहे हैं तो यह छोटी स्क्रिप्ट काम कर सकती है। यह प्रत्येक शाखा को मास्टर पर रीबेस करता है।

for BRANCH in `ls .git/refs/heads`; do git rebase master $BRANCH; done 
0

मैं निम्न कार्य करें:

for BRANCH in $(ls git/refs/heads); do git checkout $BRANCH ; git merge origin/master $BRANCH ; done

+0

क्या आप वास्तव में इसे चलाते थे? 'बी में $ (<.git/refs/head) के लिए; echo $ b करते हैं; किया 'कुछ भी प्रिंट नहीं करता है, इसलिए मैं कल्पना नहीं कर सकता कि यह कुछ भी कैसे कर सकता है। – Jeff

+0

मेरा बुरा, ब्रंच var के लिए $ BRANCH का उपयोग कर रहा था। – 3manuek

+0

आप दिए गए कोड से देख सकते हैं कि यह मुद्दा नहीं है। – Jeff

संबंधित मुद्दे