2015-02-20 5 views
6

के लिए मैं Git हमेशा मर्ज करता है (--no-ff) बनाने के लिए जब मैं git merge उपयोग करना चाहते हैं, लेकिन git pull के लिए डिफ़ॉल्ट व्यवहार (--ff) रहते हैं। क्या यह संभव है (कॉन्फ़िगर के साथ)?नियमित मर्ज के लिए तेजी से आगे विलय को बंद कर दें, लेकिन नहीं खींच

उत्तर

3

दो कॉन्फ़िगरेशन जो मदद कर सकता है कर रहे हैं:

merge.ff 

(git merge man page से): false को सेट करते हैं, इस चर Git बताता है एक अतिरिक्त मर्ज तरह के एक मामले में प्रतिबद्ध (--no-ff विकल्प दे के बराबर बनाने के लिए कमांड लाइन से)।

pull.ff 

(git config man page से)

pull.fftrue करने के लिए सेटिंग डिफ़ॉल्ट व्यवहार जहां Git पैदा नहीं करता एक अतिरिक्त मर्ज प्रतिबद्ध मर्ज एक है कि प्रतिबद्ध रहेंगे वर्तमान के वंश के लिए प्रतिबद्ध है।

परीक्षण करने के लिए: pull.ffmerge.ff से अधिक प्राथमिकता लेता है?

git config pull.ff only 
git config merge.ff false 

Kelvin ने उल्लेख किया है answer और git-pull.sh द्वारा की पुष्टि की, 'onlytrue' 'का उपयोग करने के मूल्य, नहीं है।'

+0

टिप के लिए धन्यवाद, लेकिन ऐसा लगता है कि 'merge.ff' को प्राथमिकता मिलती है। – oyvind

+0

@oyvind जो मुझे डर था ... – VonC

+0

@oyvind आप "बेयर" 'गिट पुल 'के बजाय उपनाम का उपयोग करके इस मुद्दे को हल कर सकते हैं जो' git pull --ff' को इंगित करता है। लेकिन कृपया इसे 'गिट पफ' न कहें। –

3

यहां मेरा टिकाऊ वर्कफ़्लो है (ध्यान दें कि pull.ff कॉन्फ़िगरेशन विकल्प केवल गिट 2.x पर काम करता है)।

उपयोग इस config:

  • false करने के लिए सेट merge.ff। यह merge व्यवहार को --no-ff पर व्यवहार करता है।
  • pull.ffonly पर सेट करें। यह pull व्यवहार को --ff-only पर डिफ़ॉल्ट करता है।

इसका मतलब है कि अगर आप pull करने के लिए एक शाखा की कोशिश जहां अपने स्थानीय है दोनों & दूरदराज के आगे पीछे, pull असफल हो जायेगी। उस स्थिति में, rebase करें ताकि आप और पीछे न हों।

नोट:

मैं true को pull.ff स्थापित करने की कोशिश की लेकिन Git के रूप में यद्यपि विकल्प पूरी तरह से सेट नहीं होने पर यह इलाज के लिए लगता है। ध्यान दें कि मैन पेज का उल्लेख नहीं है कि true एक मान्यता प्राप्त मान है।

+0

अच्छी तरह से देखा गया। +1। मैंने तदनुसार अपना जवाब संशोधित किया है। – VonC

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