2010-10-07 9 views
11

उपयोग-केस के बिना शाखाओं के बीच परिवर्तन के लिए कदम: हर बार जब मैं एक और मैं कार्यों की निम्न क्रम प्रदर्शन करने के लिए एक Git शाखा से प्रतिबद्ध ले जाना चाहते हैं: [काम कर शाखा में प्रतिबद्ध]Git: निर्देशिका परिवर्तन काम कर

  1. git checkoutशाखा करने के लिए मर्ज-में
  2. git cherry-pickलक्ष्य-लिखें
  3. git push
  4. git checkoutमजदूर शाखा

यही एकमात्र अपवाद के साथ ठीक काम करता है - हर बार जब मैं प्रदर्शन 'Git चेकआउट' Git कार्यशील निर्देशिका सामग्री बदल गया है (उम्मीद) और है कि मेरे आईडीई (IntelliJ विचार) का कारण बनता है के लिए आंतरिक राज्य अद्यतन करें (क्योंकि निगरानी फ़ाइल सिस्टम उप-पेड़ को बाहरी रूप से संशोधित किया जाता है)। यह वास्तव में बड़ी संख्या में छोटे कामों के मामले में परेशान करता है।

मैं जाने के लिए दो तरीके देखें:

  1. प्रदर्शन 'बड़े पैमाने पर चेरी उठाता है', अर्थात प्रदर्शन करता की बड़ी संख्या; कामकाजी दिन के अंत में, उन्हें दूसरी शाखा में ले जाएं;
  2. में दूसरा स्थानीय गिट भंडार है और उस पर चेरी चुनौतियों का प्रदर्शन करते हैं, यानी हर बार वास्तविक प्रतिबद्धता और पुश कार्यरत शाखा में किया जाता है, उस दूसरे भंडार पर जाएं, परिवर्तन खींचें और चेरी को वहां से चुनें;

मुझे पहला दृष्टिकोण पसंद नहीं है क्योंकि यह विशेष प्रतिबद्धता को स्थानांतरित करना भूलना संभव है। दूसरा एक थोड़ा सा दिखता है ... अप्राकृतिक।

असल में, यह सही होगा अगर मैं गिट कह सकता हूं कि 'शाखा शाखा से नाम शाखा शाखा के साथ इस शाखा को शाखा शाखा एक्स + 1' में निर्देशिका निर्देशिका अद्यतन के बिना ले जाएं।

प्रश्न: क्या उपर्युक्त प्रदर्शन करना संभव है?

+3

विकल्प 3: अपने संपादक को अपने रास्ते में आने से रोकने के लिए निर्देश दें। – rafl

+1

आप संपादक के साथ कैसे काम करना चाहेंगे जो बाहरी फ़ाइल परिवर्तनों को प्रतिबिंबित नहीं करता है? –

+0

आपको शीर्षक को अपने वास्तविक प्रश्न – cmcginty

उत्तर

1

यदि आपको cherry-pick करने के बजाए अक्सर अपने परिवर्तनों को मर्ज करने की आवश्यकता नहीं है, तो से git merge <working branch> पर एक बार ऐसा करने के बारे में कैसे? पिछली बार आपके विलय होने के बाद से यह सभी बदलावों के चेरी-पिकलिंग के समतुल्य होगा, अगर मुझे गलत नहीं है (इस दृष्टिकोण के साथ प्रतिबद्धता को भूलने का कोई खतरा नहीं है)। इस तरह, "संपादक समस्या" कम अक्सर होता है।

+0

सुझाव के लिए धन्यवाद लेकिन जहां तक ​​मैं समझता हूं कि विलय न केवल मेरी प्रतिबद्धता लाएगा बल्कि सभी शाखाओं के बीच काम करेंगे। अर्थात। मेरे और मेरे सहयोगियों द्वारा किए गए कामों की संख्या और मैं केवल अपने लक्ष्य को दूसरी शाखा में ले जाना चाहता हूं। –

+0

@ denis.zhdanov: मैं देखता हूं कि अब आपको क्या चाहिए। मुझे यकीन नहीं है कि स्वचालित रूप से * आपके * काम करने का तरीका कैसे चुनें ... – EOL

7

नहीं, कामकाजी निर्देशिका को बदले बिना शाखाओं के बीच प्रतिबद्धता को स्थानांतरित करना संभव नहीं है। ऐसा इसलिए है क्योंकि आप अंततः एक संघर्ष में भाग लेंगे, जिस बिंदु पर गिट रोकता है ताकि आप संघर्ष को ठीक कर सकें। यदि आपका काम सीधे उस राज्य का प्रतिनिधित्व नहीं करता है, तो आप संघर्षों को सही ढंग से ठीक करने में सक्षम नहीं होंगे।

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