2010-02-11 15 views
10

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

मुझे लगता है कि मैं प्रत्येक शाखा के लिए git checkout branch; git pull को धक्का दे सकता हूं। क्या कोई कमांड या स्विच है जिसका उपयोग मैं कर सकता हूं

सभी शाखाओं और मास्टर में परिवर्तन खींचें और लागू करें?

+0

जब आप खींचते हैं, तो यह सभी शाखाओं को उनकी स्थानीय प्रतियों (रिमोट/मूल/... के तहत सामान) में लाता है, इसलिए आपको हर बार 'गिट पुल' चलाने की ज़रूरत नहीं होती है, बस शाखा बदलें और करें गिट मर्ज मूल/शाखा। – ebneter

+0

संभव डुप्लिकेट [क्या "गिट पुल --all" मेरी सभी स्थानीय शाखाओं को अपडेट कर सकता है?] (Http://stackoverflow.com/questions/4318161/can-git-pull-all-update-all-my-local-branches) – Chronial

उत्तर

7

मुझे लगता है कि कोई उपलब्ध आदेश या क्योंकि git pull क्या करता है के स्विच वहाँ है - यह रिमोट (git fetch की तरह) से परिवर्तन को हासिल करेगा और उन्हें अपने वर्तमान शाखा (git merge origin/master या जो कुछ भी अपने वर्तमान शाखा पटरियों) में परिवर्तन विलीन हो जाती है। समस्या पहले भाग नहीं है (वास्तव में git fetch सभी दूरस्थ शाखाओं के लिए परिवर्तन लाती है) लेकिन मर्ज करें - जब आप विलय विवाद करते हैं तो क्या किया जाना चाहिए? आप केवल काम करने वाली प्रतिलिपि पर विलय कर सकते हैं, गिट ऑब्जेक्ट्स पर नहीं। और जब आप विलय शुरू करते हैं, तो आपको इसे निरस्त करने या सभी विवादों को हल करने और विलय प्रतिबद्धता बनाने की आवश्यकता होती है।

+0

+1। निश्चित रूप से ऐसा करने के लिए एक स्क्रिप्ट लिखना मुश्किल होगा। – ebneter

4

आपकी समस्या git pull के साथ नहीं है git push के साथ है। Git की स्थापना केवल शाखा वर्तमान शाखा ट्रैक कर रहा है (यदि लागू हो) के लिए पुश करने के लिए प्रयास करें:

git config --global push.default tracking 

इस दौरान, आप पुश करने के लिए जब भी आप चाहते हैं कर रहे हैं, लेकिन आप के लिए अस्वीकृति नोटिस मिल जाएगा शाखाएं जो धक्का पर तेजी से आगे नहीं बढ़ेगी। वे अक्सर शाखाएं हैं जिन पर आप काम नहीं कर रहे हैं, इसलिए ज्यादा परवाह नहीं है।

उपरोक्त कॉन्फ़िगरेशन आपको थोड़ा और समझदार व्यवहार देगा जब आप यह निर्दिष्ट नहीं करते कि क्या धक्का देना है।

+0

अच्छा! मुझे push.default कॉन्फ़िगरेशन विकल्प से अवगत नहीं था। गिट-पुश के लिए मैनुअल पेज एक वैकल्पिक लेकिन समान समाधान प्रदान करता है: git config remote.origin.push HEAD –

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