खाली प्रतिबद्ध संदेश के कारण घृणित प्रतिबद्धता


82

एक नौसिखिया उपयोगकर्ता के रूप में, जब मैं अपना काम करने की कोशिश करता हूं

git commit -a -v

और मैं अपने संपादक में एक संदेश दर्ज करता हूं, मैं फाइल बंद करता हूं, और यह त्रुटि प्राप्त करता हूं:

Aborting commit due to empty commit message.

मैंने इस मुद्दे को संबोधित करने वाले लगभग सभी विषयों को पढ़ा है, संपादकों को बदल दिया है, मूल रूप से सब कुछ करने की कोशिश की लेकिन कुछ भी मदद नहीं करता है। मुझे क्या करना चाहिए?

नोटपैड ++ के साथ पूरी प्रक्रिया की कोशिश करते समय एक बात मैंने गौर की, फ़ाइल को बचाया नहीं जा सका।

एक संभावित समाधान यह है:

git commit -am "SomeComment"

लेकिन ऐसा करने से मुझे लगता है कि मैं git का उपयोग करने के उद्देश्य को कम करने की तरह हूं। मैं अपने परिवर्तनों को ठीक से दस्तावेज़ित करना चाहता हूँ।


खिड़कियों के लिए कौन सा संस्करण का उपयोग कर रहे हैं?
जोश ली

3
यहाँ एकमात्र अशक्त करने वाली चीज़ एक प्रासंगिक प्रतिबद्ध संदेश नहीं डाल रही है। git प्रतिबद्ध -am "SomeRelevantComment"
NickSuperb

जब आप अपने संपादक से फ़ाइल को बचाने का प्रयास करते हैं तो आपको क्या त्रुटि मिलती है?
कार्ल ब्वेलफेल्ट

विंडोज 7 पर मुझे वह समस्या हुई है, जबकि `C: \ Program Files` के तहत आने वाली फाइलों पर काम करना। विंडोज 7 इस निर्देशिका में (और कहीं भी) लिखने से बचाता है, और चूंकि अस्थायी फ़ाइल (COMMIT_MSG या कुछ और) जहां आप अपना प्रतिबद्ध संदेश लिखते हैं, वह .गित निर्देशिका में बनाया जाता है, जो विफल रहा।
गॉथियर

"प्रलेखित करें"? हम्म ...
पैट्रिक

जवाबों:


140

जब आप Git के कॉन्फ़िगरेशन में एक संपादक सेट करते हैं, तो अपने कस्टम संदेश पर टाइप करने के लिए Git को बाध्य करने के लिए पैरामीटर "-w" को सुनिश्चित करें कि आप अपने कस्टम संपादक पर टाइप करेंगे।

git config --global core.editor "[your editor] -w"

1
उदात्त पाठ पर उपदेश 2. अन्य सामान का एक समूह बनाने की कोशिश की, यह पहली बार काम करने के लिए किया गया था। धन्यवाद ज़क।
स्कॉट सिल्वी

परीक्षण के रूप में, उदात्त पाठ 2, या gedit का उपयोग करके मेरे लिए निश्चित।

उदात्त पाठ 3: -w उद्धरण, प्रतिभा को सम्मिलित करें। जैसा कि मैंने कई अन्य मंचों और उदाहरणों में देखा है, मैं उद्धरण चिह्नों के बाहर इसका उपयोग कर रहा था।
danjah

7
मैकविम के लिए, झंडे के mvim -fबजाय का उपयोग करें -w
निशांथनथममुघम

1
लगता है कभी कभी एक बग है जैसे कि जब आप एक संदेश है, तो प्रतिबद्ध स्थापित करने के लिए जीएडिट के वर्तमान उदाहरण का उपयोग "gedit -w"लेकिन मेरे लिए काम नहीं किया, "gedit -s"या "gedit --standalone"काम करता है।
jfv

42

यह त्रुटि तब हो सकती है जब आपकी टिप्पणी एक #चरित्र के साथ शुरू होने वाली एकल पंक्ति हो । उदाहरण के लिए, मुझे यह त्रुटि तब मिली जब मैंने अपने प्रतिबद्ध संदेश टेक्स्ट एडिटर विंडो में निम्नलिखित को पूरा किया:

#122143980 - My commit message was here. The number to the left is a Pivotal Tracker story/ticket number that I was attempting to reference in the commit message.
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch [MYBRANCH]
# Your branch is up-to-date with 'origin/[MYBRANCH]'.
#
# Changes to be committed:
#   modified:   [MYFILE1]
#   modified:   [MYFILE2]
#

समस्या यह है कि मेरे प्रतिबद्ध संदेश की शुरुआत एक #चरित्र से हुई थी, इसलिए गिट ने उस पंक्ति को एक टिप्पणी के रूप में देखा, और परिणामस्वरूप प्रतिबद्ध संदेश को खाली होने के रूप में देखा, क्योंकि इसमें टिप्पणियों के अलावा कुछ भी नहीं था!

इसके अलावा एक चरित्र के साथ मेरे प्रतिबद्ध संदेश को शुरू करना था #

मेरे विशिष्ट मामले में, चौकोर कोष्ठक में Pivotal ID को घेरने से git और Pivotal दोनों खुश हो गए:

[#122143980] My commit message here. 

3
GitLab में मुद्दों के लिए एक ही वाक्यविन्यास है, मैं अपनी पहचान वाले संदेशों को समस्या पहचानकर्ता के साथ उपसर्ग करने के लिए उपयोग करता हूं और यह एक मुद्दा था, समस्या संख्या का ब्रैकेट GitLab के साथ भी ठीक काम करता है।
परिक्रमा

2
हुह, लाजवाब, आपने इसे नंगा कर दिया! यह मुझे बैटी ड्राइविंग कर रहा था, लेकिन मुझे लगता है कि मैंने वास्तव में GitHub मुद्दे की संख्या के साथ कमिट शुरू कर दिया था #xxxx Fixed: ...और इसे बदलकर Fixed #xxxx: ...वास्तव में इसे ठीक कर दिया है। धन्यवाद।
Slartibartfast

मैं एक github मुद्दे का उपयोग करके संदर्भित किया था #123 some message। कमिट के दौरान काम किया, लेकिन बाद में विफल हो गया जब rebaseसंपादक के माध्यम से आ रहा था।
स्टैफोर्ड विलियम्स

20

विजुअल स्टूडियो कोड के लिए

git config --global core.editor "code -w"

परमाणु के लिए

git config --global core.editor "atom -w"

उदात्त के लिए

git config --global core.editor "subl -w"

1
अपने पहले दो तरीकों के बीच के अंतर की जाँच करना चाहते हैं
mcalex 13

और आप मूल सेटिंग पर वापस कैसे जाते हैं? या आप वर्तमान सेटिंग को कैसे पढ़ते हैं?
टिम

8

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

  • अपना दस्तावेज़ (जब आप बदलाव कर रहे हों) एक अलग फ़ाइल 'डॉक्टर-कमिट' (या जो भी नाम आप इसे कॉल करना चाहते हैं ) में लिखें
  • ' git commit -a -F /path/to/doc-commit') के साथ प्रतिबद्ध

संक्षेप में, एक अलग फ़ाइल का उपयोग करें (जो आपके इच्छित संदेश के रूप में किसी भी पथ पर हो सकती है)।


क्या मैं उस फ़ाइल में टिप्पणी कर पाऊंगा ( # my comment)?
बोरिसदिाकुर

@ मुझे इस पर संदेह है (इसे सीधे परीक्षण नहीं किया है, लेकिन इसे आपकी पाठ फ़ाइल की पूरी सामग्री को एक प्रतिबद्ध संदेश के रूप में लेना चाहिए।
VONC

मैंने अभी इसे आज़माया: मेरी टिप्पणियों को संदेश के हिस्से के रूप में माना गया था, इसलिए ऐसा लगता है कि पाठ फ़ाइल में टिप्पणियां होना संभव नहीं है। वैसे भी मुझे एक कार्य पर काम करते समय एक अलग डॉक-कमेटी फाइल में बदलावों के दस्तावेजीकरण की प्रक्रिया पसंद है। तो धन्यवाद!
बोरिसदिाकुर

8

मैं Git में नौसिखिया भी हूं। मुझे मूल रूप से आपकी जैसी ही समस्या का सामना करना पड़ा। मैंने इसे टाइप करके हल किया:

git commit -a -m 'some message'

कारण यह है कि git संदेशों के बिना प्रतिबद्धता की अनुमति नहीं देता है। आपको कुछ संदेशों को अपनी प्रतिबद्ध कमांड के साथ जोड़ना होगा।


5

मुझे यह समस्या हो रही थी। मैंने अभी 1.8.0 पहले स्थापित किया था, और मैंने पाया कि मुझे उपरोक्त को थोड़ा संशोधित करना होगा। मैं इस सब पर बहुत नया हूँ, लेकिन अनिवार्य रूप से ऐसा लगता है कि, जब यह कमिट करता है, तो यह content.editor का उपयोग करेगा, न कि core.editor, कम से कम यदि आपके पास content.editor के लिए कुछ सेट है।

तो यह बात थी

git config --global content.editor "pico -w"

कि आखिरकार मुझे करने दो! जाहिर है, जो भी संपादक आप का उपयोग करें।

आशा है कि यह किसी दिन मदद करता है!


5

गिट निर्दिष्ट संदेश के बिना प्रतिबद्ध करने की अनुमति नहीं देता है। क्या आपने प्रतिबद्ध संवाद में संदेश को निर्दिष्ट किया है?

ध्यान दें कि # से शुरू होने वाली रेखाओं को Git द्वारा टिप्पणी के रूप में माना जाता है और उन्हें Git द्वारा टिप्पणी और अनदेखा नहीं माना जाता है।


5

पहले संपादकों की पुरानी प्रविष्टियाँ निकालें:

git config --global --unset-all core.editor
git config  --unset-all core.editor

अपना संपादक सेट करें:

  • नोटपैड ++ के लिए

    git config --global core.editor "Notepad++ -w"
    git config core.editor "Notepad++ -w"
    
  • उदात्त के लिए

    git config --global core.editor "Notepad++ -w"
    git config core.editor "subl -w"
    

4

मैंने अपना परमाणु संपादक कॉन्फ़िगर कर दिया है

git config --global core.editor "atom --wait"

लेकिन जब मैंने किया

git commit

जब परमाणु पहले से ही लॉन्च किया गया था, तो उसने टिप्पणियों को जोड़ने के लिए एक नया टैब खोला, लेकिन git मुझे फ़ाइल को सहेजने के लिए इंतजार नहीं कर रहा था और "संदेश" को तुरंत फेंक दिया। जब मैंने परमाणु को बंद किया और एक और बार करने की कोशिश की, तो गिट ने परमाणु लॉन्च किया और टिप्पणियों को जोड़ने के लिए इंतजार किया।


4

' सबलाइम ' एडिटर के लिए विंडोज़ मशीन पर हम निम्नलिखित फ़ोल्डर में। पंक्तिबद्ध फाइल में निम्नलिखित लाइन को जोड़ सकते हैं [आपका DRIVE LETTER]: / उपयोगकर्ता / उपयोगकर्ता नाम /

[core]
  editor = '[YOUR DRIVE LETTER]:/Program Files/Sublime Text [YOUR VERSION NUMBER]/sublime_text.exe' --wait

आशा है कि इससे सहायता मिलेगी।


मेरे लिए यह नामक एक फाइल बनाता है --wait। क्या आपके पास एक कार्यशील उदाहरण है जहां फ़ाइल में पथ में रिक्त स्थान शामिल हैं, जैसे कि Program Files? धन्यवाद।
zx81

2

यह एक प्रतिबद्ध संदेश की अपेक्षा करता है।

विम के लिए : (मैं एक नौसिखिया भी हूँ। मैंने केवल विम के साथ ही काम किया है)

आपकी आज्ञा के बाद,

git commit -v

आपको नाम के साथ एक फ़ाइल के लिए निर्देशित किया जाएगा

".गित / COMMIT_EDITMSG"

यह आपके संपादक में खुलता है (जो मेरे मामले में विम है)

आपको बहुत से टिप्पणी किए गए पाठ मिलेंगे जो बिल्कुल वही दिखते हैं जैसा आपने देखा था

git status  OR
git diff

यदि आप ध्यान दें, तो आप शीर्ष पर एक खाली रेखा देख सकते हैं - जहां यह एक प्रतिबद्ध संदेश की उम्मीद करता है। आप यहाँ प्रतिबद्ध संदेश टाइप कर सकते हैं और संपादक को बचा सकते हैं और छोड़ सकते हैं। हॊ गया!


परफेक्टो !!! मुझे पता है कि एक सरल समाधान होगा
स्कॉट स्टेंसलैंड

2
git config --global core.editor "subl -w" -F 

इसने मुझे बहुत परीक्षण और त्रुटि के बाद मदद की, आशा है कि कोई इसे उपयोगी पाता है।

मैंने पहले से ही sublime 3 को subl कमांड के रूप में उपयोग करने के लिए सहानुभूति दी थी।

मैं पूरी तरह से क्लूलेस हूं, क्यों "-फ्लैग के बाहर" "काम किया।


1
मुझे -F ध्वज की आवश्यकता नहीं थी; -वह पर्याप्त था। -w सबलेम को "लौटने से पहले बंद होने वाली फ़ाइलों की प्रतीक्षा करें" (से subl --help) बताता है ।
गैलेन लॉन्ग

1

सुनिश्चित करें कि एक पूंजी डब्ल्यू।

git config --global core.editor "Open -a 'Sublime Text 2' -W"

या मौजूदा कमांड को ठीक से काम नहीं करने वाले को बदलने के लिए निम्न कमांड का उपयोग करें।

git config --replace-all core.editor "Open -a 'Sublime Text 2' -W"


1

नोटपैड ++ (विंडोज) पर टिप्पणी करने के लिए यह करें:

1. कहीं एक बैच फ़ाइल बनाएँ (उदाहरण के लिए c: \ Users \ me \ script \ npp.bat)
इसे बैच फ़ाइल में लिखें (यह निर्भर करता है कि आपका नोटपैड ++ कहाँ स्थापित है):

"C:\Program Files\Notepad++\notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"

2. बैच फ़ाइल सहेजें।
3. ओपन .gitconfig (जो आमतौर पर आपके विंडोज यूजर फोल्डर में होता है) और सुनिश्चित करें कि आपके पास [कोर] सेक्शन के
तहत :

editor = '"c:\\Users\\me\\scripts\\npp.bat"'

या तो चलाएं:

git config --global core.editor '"c:\Users\me\scripts\npp.bat"'

4. अब किसी प्रकार का कमिटमेंट करें, और यह नोटपैड ++ को खोलेगा, जीआईटी कमिट अब नोटपैड ++ विंडो के बंद होने तक इंतजार करेगा।


1

आगे बढ़ने के लिए, यह सुनिश्चित करने के लिए कि आगे बढ़ने के लिए आपका git किसी प्रकार के संपादक प्रॉम्प्ट (दृश्य स्टूडियो / उदात्त / नोटपैड ++ / परमाणु आदि) को खोलने के लिए सही तरीके से कॉन्फ़िगर किया गया है।

  • मेरे मामले के लिए मैंने उबंटू वातावरण में दृश्य स्टूडियो का उपयोग करने के लिए अपने गिट को कॉन्फ़िगर किया।
  • मैंने एक बदलाव करने की कोशिश की, यह दी गई विफलता के साथ विफल रहा।
  • तब मैं अपने को देखा .gitconfigफ़ाइल और अपने संपादक याद आ रही थी पता चला -wपैरामीटर
  • मैंने git config --global core.editor "code -w"कमांड चलाई और अपनी .gitconfigफ़ाइल रीचेक की , ध्यान दिया -wकि वहां सही तरीके से जोड़ा गया था।
  • फिर से बदलाव करने की कोशिश की और यह मेरे लिए काम किया।

आशा है कि यह कुछ अन्य नौसिखिया की तरह खुद के लिए मदद करता है।


0

मैंने अपने फैंसी MacVim एडिटर से स्विच करके समस्या को ठीक किया, जो एक नई विंडो खोलता है, मानक डिफॉल्ट vim in / user / bin / vim जो उसी विंडो में खुलता है जिसे शेल से शेल कहा जाता है, और यह तय हो गया लगता है समस्या।


1
आपको बस -f झंडा जोड़ना होगाgit config --global core.editor "mvim -f"
Ilias Karim

0

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


0

जब मैंने पूर्ण परमाणु फ़ाइलपाथ का उपयोग किया तो यह काम नहीं आया, इसलिए उपयोग करने के बजाय:

git config --global core.editor "c:/programs/atom/atom.exe -w"

मैंनें इस्तेमाल किया:

git config --global core.editor "atom -w"

और यह ठीक काम किया। सौभाग्य!

महत्वपूर्ण: पहले यह सुनिश्चित करें कि जिस कमांड लाइन का आप उपयोग कर रहे हैं, उससे परमाणु सीधे (परमाणु) कॉल करना शुरू कर देता है।


0

त्रुटि के लिए समाधान

यहाँ छवि विवरण दर्ज करें

जैसा कि मैंने ऊपर दिखाया है कि एक कमिट फ़ील्ड है जिसे आपको कमिट करते समय दर्ज करने की आवश्यकता है, यह मूल रूप से संस्करण नियंत्रण और प्रत्येक कमिट के लिए परिवर्तनों को समझने के लिए है।

यदि आप इसे दर्ज नहीं करते हैं, तो आपको त्रुटि मिलेगी: खाली प्रतिबद्ध संदेश के कारण कमिट करना

नोट: उपरोक्त केवल Rstudio कमिट में और फाइलों को खींचने का काम करता है।


0

मुझे यह त्रुटि मिली, और भले ही मैंने उपयोग किया git config --global core.editor "code -w", फिर भी यह मेरे लिए फ़ाइल बंद करने की प्रतीक्षा नहीं करेगा। यह सिर्फ तुरंत गर्भपात होगा।

मेरी समस्या यह थी कि मैंने पहले यह कमांड चलाया था git config core.editor "code"

ऐसा लगता है कि core.editor(जो मुझे लगता है कि एक स्थानीय कामकाजी निर्देशिका विनिर्देश है), ने पूर्वता ली --global core.editor

यदि git config --global core.editor "code -w"(या जो भी संपादक आप उपयोग करने की कोशिश कर रहे हैं) आपके लिए काम नहीं करता है, तो छोड़ने की कोशिश करें --global

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