2009-09-25 11 views
8

में शाखाएं स्विच करना कभी-कभी मैं एक फीचर शाखा में हूं, लेकिन मैंने एक असंबंधित परिवर्तन किया है जिसे मैं मास्टर में देखना चाहता हूं। अक्सर मैं सिर्फ कर सकते हैं:गिट

git checkout master 
git commit -m "..." filename 

लेकिन कभी कभी जब मैं चेकआउट मैं एक चेतावनी स्थानीय परिवर्तन देखते हैं और इस तरह मैं शाखा परिवर्तन नहीं कर सकते कि मिलता है।

यह कभी-कभी क्यों होता है? क्या मुझे यह संदेश देखने पर कोई कामकाज है? शायद छेड़छाड़?

उत्तर

15

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

दो तरीके:

  1. आपके परिवर्तनों को "गिट स्टैश", मास्टर में बदलें, और "गिट स्टैश लागू करें"। फिर परिवर्तन करें।

  2. शाखा में इच्छित परिवर्तनों को कम करें, फिर किसी अन्य बदलाव (अगर कोई है), "मास्टर में बदलें, और चेरी-मास्टर पर परिवर्तन चुनें।

+5

चार तरीकों से: 3. आप हमेशा "गिट चेकआउट-एम" के साथ 3-तरफा विलय करने का प्रयास कर सकते हैं, और 4. आप "गिट चेकआउट-एफ" के साथ चेकआउट (अपने परिवर्तन खोना) को मजबूर कर सकते हैं। –

0

मैंने इसे भी देखा है। मुझे लगता है कि मुद्दा यह है कि जब आपके स्थानीय परिवर्तन दूसरी शाखा में कुछ के साथ बदल जाएंगे (जैसा कि दूसरी शाखा में नई फाइल के विपरीत नहीं है)। आप दूसरी शाखा को एक अलग निर्देशिका में हमेशा देख सकते हैं।

+0

आप एक अलग निर्देशिका में दूसरी शाखा कैसे देख सकते हैं? –

+0

गिट-न्यू-वर्कडियर पर मदद की तलाश करें, जो आपको एक ही रेपो द्वारा समर्थित एक नई कार्य निर्देशिका बनाने देता है। – Phil

+0

मुझे लगता है, यह गिट गिट रेपो में contrib/workdir में एक स्क्रिप्ट है। धन्यवाद! –