मैं git मर्ज का डिफ़ॉल्ट कैसे बन सकता हूं --no-ff --no-प्रतिबद्ध?


84

कंपनी की नीति --no-ffमर्ज कमिट के लिए उपयोग करना है। मैं व्यक्तिगत रूप से मर्ज लॉग संदेशों को समायोजित करना पसंद करता हूं इसलिए मैं उपयोग करता हूं --no-commit। इसके अलावा मैं वास्तव में संकलन और परीक्षण करना पसंद करता हूं इससे पहले कि मैं प्रतिबद्ध हो जाऊं।

मैं कैसे कर सकता हूँ --no-ffऔर --no-commitसभी शाखाओं के लिए मेरे लिए डिफ़ॉल्ट?

(और मैंने यह पूछने के बाद से वर्षों में सीखा है, मैं लगभग हमेशा कमिट से खुश हूं, इसलिए इसे डिफ़ॉल्ट रूप से करने की अनुमति देना सरल है और जब तक मैं संशोधन करता हूं या अन्यथा चीजों को धक्का देने से पहले ठीक कर लेता हूं) सब अच्छा...)


पुराने संबंधित: stackoverflow.com/questions/2500296/…
cregox

जवाबों:


112

इसे $ HOME / .ITconfig में डालें:

[merge]
    ff = no
    commit = no

आप ऐसा करने के लिए git-config का उपयोग कर सकते हैं:

  git config --global merge.commit no
  git config --global merge.ff no

1
क्या आपको यकीन है कि यह काम करता है? यह मेरे लिए नहीं है, मुझे branch.master.mergeoptions="--no-ff"या तो उपयोग करना था , या merge.ff="no"(नीचे उत्तर देखें)

@gaizka वास्तव में, 1.7.2 में और 1.7.7.2 में यह काम नहीं करता है। मैं पुराने संस्करणों की जांच करने के लिए कुछ समय बाद कोशिश करूंगा।
विलियम पुरसेल

@ Git config कमांड का उपयोग करते हुए, यह इसे [मर्ज] में डालता है, न कि [कोर]
Tisch

41

बनाने के लिए --no-ff --no-commitडिफ़ॉल्ट मर्ज व्यवहार, करने के लिए विकल्पों को सेट noका उपयोग कर:

git config --global merge.ff no
git config --global merge.commit no

हालाँकि, इसके साथ समस्या यह है कि git pull= git fetch+ git merge। इसलिए जब भी आप रिमोट सर्वर से खींचते हैं, आप एक बदसूरत मर्ज कमिट बना रहे होंगे जब एक साधारण फास्ट-फ़ॉरवर्ड वारंट किया जाएगा। इसे हल करने के लिए, निम्न पर सेट pull.ffकरें yes:

git config --global pull.ff yes

17
हालांकि यह मर्जोपॉटेशन का उपयोग करते समय सच है, यह ध्यान दिया जाना चाहिए कि यदि आप merge.ffइसके बजाय उपयोग कर रहे हैं तो यह ऐसा नहीं करता है - यह केवल स्पष्ट मर्ज को प्रभावित करता है, जबकि पुल अभी भी वांछित तेजी से आगे करता है।
निक

3
जब मैं उपयोग करता हूं merge.ff = no, तो git pullमर्ज कमिट बनाता है।
मैट मैकक्लेर

3
इसे हल करने के लिए आपको git pull --rebase( git-scm.com/docs/git-pull ) का उपयोग करना चाहिए या कॉन्फ़िगर करना होगा branch.autosetuprebase( git-scm.com/docs/git-config.html )
साइबोट

8
या उपयोगpull.ff = yes
gabeio

20

संस्करण 1.7.6 git के रूप में, आपको उपयोग करना चाहिए

git config [--global] merge.ff no

--no-ffहर मर्ज में "बल" का प्रयोग करें ।

डिफ़ॉल्ट व्यवहार है

git config [--global] merge.ff yes

और साथ

git config [--global] merge.ff only

यह गैर-फास्ट-फ़ॉरवर्ड मर्ज को मना कर देगा


11

मैनुअल के अनुसार , आपको उपयोग करना चाहिए

$ git config [--global] merge.ff false

git-config उपयोगिता के साथ सभी शाखाओं के लिए डिफ़ॉल्ट रूप से नो-फास्ट-फॉरवर्ड विकल्प सेट करने के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.