2012-04-19 5 views
5

के माध्यम से अधूरा काम (अनमोल और नई फाइलें) साझा करें मैं तीन अलग-अलग वर्कस्टेशन से अपना काम करता हूं। मैं कोडिंग सत्र के बीच में वर्कस्टेशन छोड़ने और बाद में किसी अन्य वर्कस्टेशन पर इस काम को फिर से शुरू करने में सक्षम होना चाहता हूं। यह देखते हुए कि कोड रिमोट गिट रेपो के माध्यम से साझा किया गया है, मैं इस अधूरे काम को साझा करने के लिए गिट का उपयोग करना चाहता हूं।गिट

व्यावहारिक दृष्टि से, अधूरा काम

  • वहाँ बदल रहे हैं फ़ाइलें,
  • नया ट्रैक न किए गए फ़ाइलें हैं,
  • वहाँ नष्ट हो जाती हैं फ़ाइलों का मतलब है।

अधिकांश बार ये परिवर्तन अस्थायी होते हैं: सभी परिवर्तन नहीं होते हैं और अधिकांश अनचाहे फ़ाइलों को अंतिम प्रतिबद्धता में समाप्त नहीं किया जाएगा। अनचाहे फ़ाइल का एक उदाहरण परीक्षण उद्देश्यों के लिए 20 थोड़ा अलग संशोधनों के साथ डुप्लिकेट एक परीक्षण फ़ाइल है; मैं केवल इन सभी फ़ाइलों के बारे में परवाह करता हूं, जबकि मैं एक निश्चित समस्या पर काम कर रहा हूं और मैं किसी अन्य वर्कस्टेशन पर स्विच करते समय उन्हें पुन: उत्पन्न करना नहीं चाहता हूं।

मैंने अन्य प्रश्नों और समाधानों को देखा है जो इन परिवर्तनों को धक्का देने के लिए शाखा का उपयोग करते हैं: जबकि मैं इसके साथ ठीक हूं, समस्या यह है कि इन शाखाओं को हर बार फिर से लिखा जाएगा, git push --force (मुझे --force बहुत पसंद नहीं है) या उस समय उन्हें बहुत गन्दा बनने की इजाजत दी।

मैं क्या चाहता हूं एक साधारण कमांड या गिट उर्फ ​​है जो मुझे गिट इतिहास के साथ "बहुत ज्यादा गड़बड़ाने" के बिना कार्य निर्देशिका की वर्तमान स्थिति को स्टोर करने की अनुमति देता है। एक साथी सरल कमांड या गिट उपनाम होना चाहिए जो मुझे अन्य वर्कस्टेशन से इन अस्थायी परिवर्तनों को डाउनलोड करने की अनुमति देता है।

+1

मैं इसके लिए ड्रॉपबॉक्स का उपयोग लागू होते हैं। –

उत्तर

0

आप शायद स्टैश का उपयोग कर सकते हैं, लेकिन मुझे यकीन नहीं है कि यह फिट होगा या नहीं।

एक विकल्प एक प्रतिबद्धता बनाना है जो सभी आवश्यक फाइलों को जोड़ देगा, और केवल चेरी इसे उठाएंगे, जब आपको इसकी आवश्यकता हो और सार्वजनिक रिपो को धक्का देने से पहले इंटरैक्टिव रीबेस का उपयोग करके इसे हटा दें।

0

एक व्यक्तिगत सुविधा शाखा रखें (अधिमानतः एक निजी रेपो में), सब कुछ के लिए प्रतिबद्ध, इतिहास के पुनर्लेखन नहीं है, git commit --fixup=<commit> का प्रयोग कर एक प्रतिबद्ध द्वारा शुरू की अवांछित बदलावों को बदलने के लिए, और जब अपने दिन काम या सुविधा सिर्फ git rebase -i यह समाप्त हो जाने मुख्य सुविधा शाखा या मास्टर शाखा में शाखा।

1
  1. आप हटाए गए हटाने और नई फ़ाइलों को जोड़ने के लिए git add -A का उपयोग कर सकते हैं। फिर इसे my_current_work नामक शाखा में प्रतिबद्ध करें। --force का उपयोग कर रिमोट रेपो के माध्यम से इसे एक्सचेंज करें। आप एक नया रिमोट क्लीनर साझा कर सकते हैं जो केवल आपके लिए मुख्य रेपो क्लीनर बनाने के लिए है। या यदि आपके पास वर्कस्टेशन के बीच नेटवर्क लिंक है तो आप सीधे उनके बीच परिवर्तन को पुश/खींच सकते हैं। मास्टर शाखा में अपना काम विलय करने से पहले आप प्रतिबद्ध इतिहास को साफ करने के लिए rebase -i करते हैं।

  2. एक्सचेंजिंग के लिए रिमोट रेपो के विकल्प के रूप में आप ई-मेल (git-send-email) के माध्यम से पैच भेज सकते हैं।

3

फ़ाइल में अपने परिवर्तनों को सहेजने के लिए गिट स्टैश का उपयोग करें।

git stash 
git stash show -p > myPatchFile 

अन्य कंप्यूटर पर उन्हें

git apply myPatchFile