2010-07-14 45 views
9

जब मेरे पास एक बदलाव के लिए एक फिक्स है जो पहले कुछ काम करता था, तो मैं हमेशा पंक्ति में दो बार दौड़ना बंद कर देता हूं। क्या यह वर्कफ़्लो एक ही चरण में करना संभव है? मान लें कि मेरे पास 4 नए काम हैं।क्या मैं एक ही समय में रीबेज कर सकता हूं और स्क्वैश कर सकता हूं?

* (master) D 
* C 
* B 
* A 
* Base 

मुझे बी में एक बग मिलती है इसलिए मैं एक शाखा बनाता हूं और इसे ठीक करता हूं।

* (master) D 
* C 
| * (fix) Fix. 
|/ 
* B 
* A 
* Base 

अगला मैं git rebase --onto fix B D चलाने बी

पर सी और डी को स्थानांतरित करने के
* (master) D' 
* C' 
* (fix) Fix. 
* B 
* A 
* Base 

अंत में मैं git rebase --i fix^^ चलाने पिछले कुछ करता देखने के लिए और मैं बी छुटकारा पाने और एक एकल में फिक्स करते हैं।

* (master) D' 
* C' 
* B' 
* A 
* Base 

क्या वर्कफ़्लो को पूरा करने का कोई तेज़ तरीका है? मुझे कल्पना है कि विलय आसान होगा, लेकिन विलय मेरे लिए बाहर है क्योंकि मैं गिट svn का उपयोग कर रहा हूं जिसके लिए एक रैखिक इतिहास की आवश्यकता है।

+2

शायद 'फिक्सअप' और 'ऑटोस्क्वैश' विकल्प यहां मदद कर सकते हैं? http://stackoverflow.com/questions/2302736/trimming-git-checkins-quashing-git-history/2302947#2302947 – VonC

+0

@ वॉनसी धन्यवाद, जो कम से कम इन चरणों को थोड़ा तेज़ बना देगा। –

+0

उत्कृष्ट (शुरुआत के लिए)। आप उन विकल्पों के साथ चरणों को तेज़ तरीके से दिखाते हुए एक उत्तर पोस्ट कर सकते हैं। – VonC

उत्तर

5

जब एक इंटरैक्टिव रीबेस में प्रतिबद्ध सूची के लिए संपादक दिखाता है, तो आप अपनी पसंद के अनुसार प्रतिबद्ध, हटाने या पुन: व्यवस्थित करने के लिए स्वतंत्र हैं। यह मूल रूप से चेरी-पिकिंग-इन-ए-लूप को प्रभावित करने का एक तरीका है जो होने जा रहा है (यही वह है जो रीबेज उबलता है)।

+0

एडीडी भाग वह है जो मैं याद कर रहा था। धन्यवाद। –

3

क्या आप --squash विकल्प git merge पर जानते हैं?

--squash

काम कर रहे पेड़ और सूचकांक राज्य के रूप में अगर एक असली मर्ज हुआ (मर्ज जानकारी को छोड़कर) का उत्पादन है, लेकिन वास्तव में एक प्रतिबद्ध या HEAD ले जाने के लिए नहीं है, और न ही रिकॉर्ड $GIT_DIR/MERGE_HEAD पैदा करने के लिए एक विलय प्रतिबद्ध बनाने के लिए अगली गिट प्रतिबद्ध कमांड। यह आपको वर्तमान शाखा के शीर्ष पर एक ही प्रतिबद्धता बनाने की अनुमति देता है जिसका प्रभाव किसी अन्य शाखा (या ऑक्टोपस के मामले में अधिक) विलय करने जैसा ही होता है।

+0

+1 क्योंकि मुझे - स्क्वैश के बारे में पता नहीं था। हालांकि इसके लिए समान संख्या में कदमों की आवश्यकता है। फिक्स बनाने के बाद, दो रिबैस के बजाय, मुझे गिट मर्ज करने की आवश्यकता होगी - स्क्वैश, फिर सिर पर गिट प्रतिबद्ध करें, और फिर बग के साथ प्रतिबद्धता में फिक्स को ठीक करने और स्क्वैश करने के लिए गिट रीबेज -आई को गिट करें। –

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

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