आप कितने दूर हैं और किस शाखा (तों) पर आप उन्हें चाहते हैं, इस पर निर्भर करते हुए विभिन्न तरीकों का एक गुच्छा है।
आइए एक क्लासिक गलती करें:
$ git checkout master
... pause for coffee, etc ...
... return, edit a bunch of stuff, then: oops, wanted to be on develop
इसलिए अब आप ये बदलाव चाहते हैं, जो आपने अभी तक नहीं master
किया है develop
।
आप तो नहीं है एक develop
अभी तक, विधि तुच्छ है:
$ git checkout -b develop
यह develop
अब आप जहां भी हैं वहां से एक नई शाखा शुरू करते हैं। अब आप कर सकते हैं और नया सामान सब पर है develop
।
आप की क्या ज़रूरत है एक develop
। देखें कि क्या Git आपको कुछ किए बिना स्विच करने देगा:
$ git checkout develop
यह या तो सफल होगा, या शिकायत करेगा। अगर यह सफल होता है, तो बहुत अच्छा! बस कमिट करें। यदि नहीं ( error: Your local changes to the following files would be overwritten ...
), आपके पास अभी भी बहुत सारे विकल्प हैं।
शायद सबसे आसान है git stash
(जैसा कि सभी अन्य उत्तर-ers कि मुझे क्लिक करने के लिए postकहा गया है)। भागो git stash save
या git stash push
, 1 या सिर्फ सादा / के git stash
लिए छोटा है :save
push
$ git stash
यह आपके कोड (हाँ, यह वास्तव में कुछ कमिट करता है) एक अजीब गैर-शाखा-वाई पद्धति का उपयोग करता है। यह बनाता है "किसी भी शाखा पर" नहीं हैं, लेकिन अब भंडार में सुरक्षित रूप से संग्रहीत हैं, इसलिए अब आप शाखाओं को स्विच कर सकते हैं, फिर स्टैश को "लागू करें":
$ git checkout develop
Switched to branch 'develop'
$ git stash apply
यदि सब ठीक हो जाता है, और आप परिणाम पसंद करते हैं, तो आपको git stash drop
स्टैश करना चाहिए । यह अजीब गैर-शाखा-वाई कमिट के संदर्भ को हटा देता है। (वे अभी भी रिपॉजिटरी में हैं, और कभी-कभी एक आपातकालीन स्थिति में पुनर्प्राप्त किए जा सकते हैं, लेकिन अधिकांश उद्देश्यों के लिए, आपको इस बिंदु पर उन पर विचार करना चाहिए।)
apply
कदम रखे परिवर्तन, Git के शक्तिशाली अंतर्निहित मर्ज मशीनरी, बात एक ही प्रकार का उपयोग करता है जब आप शाखा का आपस में विलय कर उपयोग करने का एक मर्ज करता है। इसका मतलब है कि आप "मर्ज टकराव" प्राप्त कर सकते हैं यदि आप जिस शाखा पर गलती से काम कर रहे थे, वह उस शाखा से पर्याप्त रूप से अलग है जिस पर आप काम करना चाहते थे। इसलिए यह एक अच्छा विचार है कि आप यह मानने से पहले परिणामों का सावधानीपूर्वक निरीक्षण करें कि स्टैस्ट साफ-सुथरे तरीके से लगाया गया है, भले ही गिट खुद किसी मर्ज संघर्ष का पता नहीं लगाता हो।
बहुत से लोग उपयोग करते हैं git stash pop
, जो शॉर्ट-हैंड के लिए है git stash apply && git stash drop
। यह ठीक है जहां तक यह जाता है, लेकिन इसका मतलब है कि यदि आवेदन में गड़बड़ी होती है, और आप तय करते हैं कि आप इस रास्ते को आगे नहीं बढ़ाना चाहते हैं, तो आप आसानी से वापस नहीं आ सकते। इसलिए मैं अलग-अलग सलाह देता हूं apply
, परिणामों का निरीक्षण करता हूं , drop
केवल तभी जब / जब संतुष्ट हो। (यह निश्चित रूप से एक और बिंदु पेश करता है जहां आप एक और कॉफी ब्रेक ले सकते हैं और भूल सकते हैं कि आप क्या कर रहे थे, वापस आओ, और गलत काम करें, इसलिए यह एक पूर्ण इलाज नहीं है।)
1save
में git stash save
एक नया गुप्त कोष बनाने के लिए वर्ष क्रिया है। Git संस्करण 2.13 ने चीजों को अधिक सुसंगत बनाने pop
और निर्माण कमांड में अधिक विकल्प जोड़ने के लिए नई क्रिया की शुरुआत की । Git संस्करण 2.16 ने पुरानी क्रिया को औपचारिक रूप से हटा दिया (हालांकि यह अभी भी Git 2.23 में काम करता है, जो कि मैं इसे संपादित कर रहा हूं उस समय नवीनतम रिलीज़ है)।
git stash
git-scm.com/book/en/Git-Tools-Stashing