Git मुझे पोस्ट-पुल मर्ज कमिट मैसेज के लिए क्यों प्रेरित कर रहा है?


142

हाल ही में, किसी भी अनुसरण करने के बाद git pull, git ने मेरे टेक्स्ट एडिटर को spawning करना शुरू कर दिया, और एक मर्ज कमिट मैसेज के लिए कहा। एक प्रतिबद्ध संदेश पहले से ही भरा हुआ है, और मुझे बस पुल को पूरा करने के लिए विंडो को सहेजना और बंद करना है।

अतीत में, यह एक मानक प्रतिबद्ध संदेश के साथ (मर्जों के साथ) चुपचाप मर्ज करता था Merge branch 'dev' of remote.com:/repo into dev

मैंने हाल ही में संस्करण 1.7.11.3 (होमब्रे के माध्यम से) में अपडेट किया है, लेकिन इस व्यवहार को बदलने के लिए मैंने कुछ और नहीं सोचा हो सकता है। यह एक सेटिंग है, या वहाँ है अन्यथा यह जिस तरह से था वापस पाने का कोई तरीका है?

जवाबों:


157

1.7.10 git में, git Developers ने निर्णय लिया कि मर्ज कमिट को बहुत आसानी से बनाया जा सकता है। जैसा कि इस ब्लॉग पोस्ट में बताया गया है , इंटरैक्टिव कमिट मैसेज व्यवहार को मजबूर करना उन प्रतिबद्ध संदेशों को अधिक विस्तृत बनाना चाहिए और अनावश्यक मर्ज की समग्र आवृत्ति को कम कर सकता है।

आप --no-editइस व्यवहार से बचने के लिए ध्वज का उपयोग कर सकते हैं , लेकिन, ठीक है, नहीं। मर्ज कमिट करता है, जैसे इतिहास में कोई भी कमिट करता है, उसका अच्छी तरह से निर्माण किया जाना चाहिए। आपका इतिहास उपयोगी होने के अलावा और कुछ नहीं होना चाहिए।


54
सहायता के लिए धन्यवाद। मैं इस बात से असहमत हूं कि मर्ज का काम हमेशा वर्णनात्मक होना चाहिए। मेरे द्वारा इसे देखने का कारण यह है क्योंकि जब भी मैं खींचता हूं तो स्वचालित मर्ज मुझे यह समझाने के लिए कहता है कि मर्ज क्यों आवश्यक है, जो जल्दी से अनुचित हो जाता है क्योंकि यह तब भी होता है जब मेरे पास कोई बदलाव नहीं होता है।
ब्रायन

10
इस व्यवहार से बचने के लिए यह एक उपयोगी संसाधन भी है: longair.net/blog/2009/04/16/git-fetch-and-merge आपको बचना चाहिए git pull; का उपयोग git merge --ff-onlyकरता है, तो आप सिर्फ अद्यतन करने के लिए कोशिश कर रहे हैं और आपको नहीं लगता कि आप किसी भी स्थानीय परिवर्तन; उपयोग करें git merge --no-ffयदि आप वास्तव में एक शाखा को मर्ज करने की कोशिश कर रहे हैं।
ग्लिफ़

6
क्या इसे बंद करने के लिए एक कॉन्फिग फ्लैग है? हर बार --no-edit टाइप करना कष्टप्रद है।
LandonSchropp

बहुत बढ़िया। @Christopher को शेयर करने के लिए धन्यवाद।
लैंडनश्रोप

3
@ सीनियनटज़ी: यह आपकी $EDITORसेटिंग पर निर्भर करता है , लेकिन यदि आप OSX पर बॉक्स से बाहर निकल रहे हैं, तो यह शायद 'vi' नामक एक प्रोग्राम है । i"INSERT" मोड दर्ज करने के लिए टाइप करें; अपना संदेश टाइप करें। तब आप सहेज सकते हैं और मार कर छोड़ सकते हैं ESCऔर फिर टाइप कर सकते हैं :wq
क्रिस्टोफर

58

भविष्य के उपयोग के लिए एक शॉर्टकट बनाने के लिए, या तो: -

~/.gitconfigनिम्नलिखित के साथ अपने संपादित करें :

[core]
    mergeoptions = --no-edit

या टर्मिनल में निम्नलिखित निष्पादित करें

git config --global core.mergeoptions --no-edit


13
यह मेरे लिए काम नहीं किया (OSX पर git), और मैंने इसे सही ढंग से सेट किया है, के आउटपुट को देखते हुए git config --global core.mergeoptions
jvannistelrooy

टर्मिनल कमांड नीचे की तरह होना चाहिएgit config core.mergeoptions --no-edit
एस। मर्ट

@SimsekMert जो केवल वर्तमान रिस्पॉन्सिटरी में .itconfig को एडिट करेगा, वैश्विक रूप से हर git रिपॉजिटरी के लिए नहीं
डलास क्लार्क

@AbhishekGoel एक ऐसा मौका है जिसके प्रभाव को लेने के लिए आपको टर्मिनल को फिर से शुरू करने की आवश्यकता हो सकती है
डलास क्लार्क

@jvannistelrooy वहाँ एक मौका है जिससे आपको परिवर्तनों को प्रभावित करने के लिए टर्मिनल को पुनः आरंभ करने की आवश्यकता हो सकती है
डलास क्लार्क

11

सबसे पहले, ऊपर दिए गए क्रिस्टोफर के उत्तर में चेतावनी पर ध्यान दें।

फिर, यदि आप अभी भी स्वचालित मर्ज कमिट मैसेज एडिटिंग को अक्षम करना चाहते हैं, तो इस पर्यावरण चर को सेट करें:

    GIT_MERGE_AUTOEDIT=no

यह पर्यावरण चर और इसकी "नहीं" सेटिंग गिट मर्ज डॉक्टर पृष्ठ पर प्रलेखित है । इसे केवल उन लिपियों में उपयोग करने की सिफारिश की जाती है, जिन्हें गैर-अंतःक्रियात्मक रूप से विलय करने की आवश्यकता होती है, लेकिन निश्चित रूप से यह आपके शेल पर्यावरण के हिस्से के रूप में सेट किया जा सकता है ताकि इसके प्रभाव को अधिक स्थायी बनाया जा सके।


क्या आप बता सकते हैं कि यह --no-editध्वज का उपयोग करने से अलग कैसे हो सकता है ?
अलेक्जेंडर मिल्स

2
मैं एक कार्यात्मक अंतर नहीं जानता, लेकिन सुविधा कारक इसे सार्थक बनाता है। --no-editझंडा, प्रत्येक उपयोग के साथ कमांड लाइन पर दोहराया जाना के रूप में यह यहाँ डलास क्लार्क के जवाब में वर्णित के रूप सेटिंग में काम करने के लिए प्रकट नहीं होता है। पर्यावरण चर सेट करना एकमात्र तरीका है जो मैं इस सेटिंग स्टिक को बनाना जानता हूं।
emackey
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.