2012-12-20 82 views
5

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

  1. एक गिट भंडार क्लोन किया गया और स्थानीय मास्टर शाखा है।
  2. एक नई स्थानीय शाखा (शाखा 2) बनाई गई जो दूरस्थ शाखा पर आधारित है।
  3. मास्टर शाखा में 2 फाइलों में बदलाव किए गए।

अब मैं जो करना चाहता हूं वह मास्टर से शाखा 2 पर स्विच है। मास्टर शाखा में किए गए परिवर्तन केवल स्थानीय देव उद्देश्यों के लिए हैं और कभी भी प्रतिबद्ध नहीं होना चाहिए। लेकिन जब मैं ग्रहण में ऐसा करने की कोशिश करता हूं (यानी मैं स्थानीय शाखा पर डबल क्लिक करता हूं जिसे मैं स्विच करने का प्रयास करता हूं) यह मुझे बताता रहता है कि असामान्य परिवर्तन हैं और मुझे प्रतिबद्ध, छिपाने या रीसेट करने की आवश्यकता है।

क्या कोई मुझे बता सकता है कि मैं स्थानीय फाइल में बदलाव कैसे कर सकता हूं और गिट ने इस बदलाव को अनदेखा कर दिया है ताकि मुझे इस संदेश से संकेत न मिले?

+1

आम तौर पर अगर आप देव प्रयोजनों के लिए केवल "और चाहिए कभी भी कॉमेट नहीं किया गया "-फाइल, आपके पास टेम्पलेट फ़ाइल है जैसे 'foo.bar.dist', सेटअप पर आप इसे' foo.bar' पर कॉपी करते हैं और निश्चित रूप से'/foo.bar' 'gitignore' में है। कारण: यदि आप इसे स्पष्ट रूप से बहिष्कृत नहीं करते हैं, तो आप इसे जल्द या बाद में प्रतिबद्ध करेंगे। – KingCrunch

+0

कृपया सुनिश्चित करें कि आप "स्थानीय शाखाएं" और गिट की वितरित सुविधाओं को समझते हैं। चल रहे विकास कार्य स्थानीय शाखा में होना चाहिए। यदि और एक बार यह तैयार हो जाने पर आप रिमोट पर सामग्री को मर्ज/पुश कर सकते हैं। यदि आप प्रकाशित नहीं करना चाहते हैं, तो इसे स्थानीय रखें। आपको सर्वोत्तम अभ्यास के रूप में "जल्दी प्रतिबद्ध करना, अक्सर प्रतिबद्ध होना" का पालन करना चाहिए।गिट स्टैश शक्तिशाली है, लेकिन ब्रांचिंग और भी अधिक है। – gertvdijk

उत्तर

3

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

आप अपने परिवर्तनों को छेड़छाड़ करने के लिए गिट स्टैश का उपयोग कर सकते हैं, या ईज अकपिनर द्वारा उल्लिखित नई शाखा में सीधे उन्हें प्रतिबद्ध करने के लिए गिट स्टैश का उपयोग कर सकते हैं।

+1

यहां कुछ वास्तव में उपयोगी टिप्पणियां हैं। धन्यवाद। – Eddie

+0

यहां कुछ वास्तव में उपयोगी टिप्पणियां। धन्यवाद। तो अनिवार्य रूप से, मुझे मास्टर शाखा में बदलाव नहीं करना चाहिए यदि मैं उन्हें प्रतिबद्ध नहीं करना चाहता हूं। मुझे इसे एक नई या फीचर शाखा में करना चाहिए। इसलिए, यदि मैं एक नई शाखा बनाता हूं, तो कहें, MyNewBranch, और मैं मास्टर में इन परिवर्तनों को शामिल करना चाहता हूं, क्या यह MyNewBranch में परिवर्तनों को कम करने के समान सरल है और फिर एक विलय यानी गिट प्रतिबद्ध-ए "परिवर्तन विवरण " गिट चेकआउट मास्टर गिट मर्ज करें MyNewBranch @ पीटरस्मिथ – Eddie

+0

हां आप बस अपनी शाखा को मास्टर में विलय कर सकते हैं। इसके अतिरिक्त यदि आप मास्टर शाखा के नए काम करते हैं तो आप अपनी शाखा को फिर से कर सकते हैं और आप यह सुनिश्चित करना चाहते हैं कि आप विवाद विवाद न करें। यदि आप रीबेस के बाद विलय कर रहे हैं तो शाखा इतिहास को बनाए रखने के लिए 'गिट मर्ज --no-ff' का उपयोग करना सुनिश्चित करें। –

4

गिट स्टैश पर एक नज़र डालें। स्टैश आपको असामान्य परिवर्तनों को स्टोर करने की अनुमति देता है।

विकल्प 1

git stash 
git checkout -b Branch2 

आपके परिवर्तन Git (स्थानीय) में संग्रहीत किया जाएगा। जब आप उन परिवर्तनों को दोबारा लागू करना चाहते हैं, तो आप git stash pop करेंगे और यह आपके लिए उन परिवर्तनों को लागू करेगा।

ऑप्शन 2

git stash 
git stash branch temporarybranch 

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

आशा यह मदद मिलती है

+1

+1 'गिट स्टैश शाखा ' के लिए +1 'मुझे नहीं पता था कि यह संभव था! –

5

नोट: यदि आप ग्रहण से प्रगति में व्यायाम छिपाया जा जरूरत है, Egit अब supports stash:

stash in EGit

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

  • कोई संबंधित समस्या नहीं^_^