2012-04-02 23 views
16

मैं अपने इच्छित उद्देश्य के लिए git-rerere उपयोग कर रहा हूँ, दो शाखाओं (मास्टर और एक विषय शाखा) के बीच संघर्ष के संकल्प रिकॉर्ड करने के लिए संवर्द्धित रूप में उन शाखाओं को विकसित करने, अनावश्यक मर्ज करता है बनाने के बिना। हालांकि, गिट-रीरेयर मैनपेज पढ़ने के बाद भी मैं थोड़ा अस्पष्ट हूं जब रीयर वास्तव में मेरे संघर्ष समाधान को रिकॉर्ड करता है। का पता लगाने और नए मर्ज संघर्ष को हल करने के लिए मेरे मानक कार्यप्रवाह विषय शाखा से git merge master ऐसा करने के लिए, संघर्ष को सुलझाने, तो सभी फ़ाइलों को मंच और git commit -m "Finished test merge" साथ मर्ज करने, और फिर मर्ज git reset --hard HEAD^ का उपयोग कर पूर्ववत, केवल दर्ज की संग्रहीत प्रस्तावों पीछे छोड़कर है git-rerere द्वारा।क्या मुझे गिट-रीरेरे को अपने संघर्ष समाधान को रिकॉर्ड करने के लिए विलय करना है?

बहरहाल, यह थोड़ा पागल लगता है। एक प्रतिबद्धता बनाना और फिर संकल्प को रिकॉर्ड करने के लिए इसे पूर्ववत करना? git-rerere के लिए मैनपेज पढ़ने के बाद, मैं अब भी जब यह मेरे प्रस्तावों रिकॉर्ड पर वास्तव में स्पष्ट नहीं कर रहा हूँ। क्या यह केवल विवादित फ़ाइलों को मंचित करने के लिए पर्याप्त है या क्या मुझे वास्तव में विवादों को हल करने के बाद विलय प्रतिबद्धता बनाने की आवश्यकता है, जैसे कि मैं कर रहा हूं?

उत्तर

12

मैनपेज से:

Running the git rerere command immediately after a conflicted automerge 
records the conflicted working tree files, with the usual conflict 
markers <<<<<<<, =======, and >>>>>>> in them. Later, after you are 
done resolving the conflicts, running git rerere again will record the 
resolved state of these files. 

और:

As a convenience measure, git merge automatically invokes git rerere 
upon exiting with a failed automerge and git rerere records the hand 
resolve when it is a new conflict, or reuses the earlier hand resolve 
when it is not. git commit also invokes git rerere when committing a 
merge result. What this means is that you do not have to do anything 
special yourself (besides enabling the rerere.enabled config variable). 

तो तुम प्रतिबद्ध और पूर्ववत करने की जरूरत नहीं है। आप प्रतिबद्धता रिकॉर्ड करने के लिए पैरामीटर के बिना git rerere चला सकते हैं।