जैसे दूसरों ने उत्तर दिया है, Git के साथ आपको अपनी व्यक्तिगत शाखाओं में गैर-समाप्त कोड की परवाह नहीं करनी चाहिए। हालांकि, अगर किसी कारण से, आप वास्तव में वास्तव में वास्तव में अपने अधूरे काम को कभी भी मुख्य रेपो को छूना नहीं चाहते हैं, तो आप गिट के वितरित प्रकृति का उपयोग कर सकते हैं!
एक सरल उपकरण है जिसका नाम git bundle
केंद्रीय भंडार के बिना परिवर्तन को आसानी से पारित करने में आपकी सहायता कर सकता है। सबसे पहले, रेपो को क्लोन करें:
git clone https://github.com/octocat/Spoon-Knife.git working_copy_1
cd working_copy_1
कुछ परिवर्तन करें और उन्हें एक अस्थायी शाखा के लिए प्रतिबद्ध करें:
git checkout -b tmp_branch
git commit -a -m "temporary changes"
अब, उन्हें बदलें बंडल:
git bundle create ../tmp.bundle tmp_branch
अब आपके पास एक बंडल फाइल है जिसे आप अपनी नई मशीन पर मेल कर सकते हैं। आप वहां इसका उपयोग कैसे करते हैं? आइए एक नई वर्किंग कॉपी बनाएं:
cd ..
git clone https://github.com/octocat/Spoon-Knife.git working_copy_2
cd working_copy_2
हमें अपने बंडल को दूसरे रिमोट के रूप में व्यवहार करने की आवश्यकता है, इसलिए हम इसमें से बदलाव ला सकते हैं
git remote add tmp ../tmp.bundle
git fetch tmp
चूंकि पूरे बिंदु को ट्रेस छोड़ने के बिना परिवर्तनों को स्थानांतरित करना था, इसलिए हम उन्हें अस्थायी रूप से खोने के लिए काम की प्रतिलिपि में स्क्वैश करना चाहते हैं:
git merge tmp/tmp_branch --squash
और जो कुछ बचा है वह अस्थायी रिमोट को हटाने के लिए है:
git remote remove tmp
आहा! परिवर्तन न तो शाखा और न ही प्रतिबद्ध का एक निशान छोड़ने के बिना नई काम करने की प्रतिलिपि में स्थानांतरित कर दिया गया!
लेकिन वास्तव में - यह प्रक्रिया काफी लंबी और बोझिल है। यह Git है, SVN नहीं - वास्तव में केंद्रीय रेपो में आपकी व्यक्तिगत शाखा को धक्का न देने का कोई कारण नहीं होना चाहिए।