Git प्रतिबद्ध किसके लिए रिक्त पाठ फ़ाइल खोलता है?


93

मेरे द्वारा पढ़े गए सभी ट्यूटोरियल में वे कहते हैं कि आप कर सकते हैं:

git init
git add .
git commit

जब मैं ऐसा करता हूं तो मुझे एक बड़ी टेक्स्ट फाइल खुल जाती है। कोई भी ट्यूटोरियल इसे संबोधित नहीं करता है, इसलिए मुझे नहीं पता कि फ़ाइल के साथ क्या करना है या इसमें कुछ भी डालना है।

जवाबों:


124

आप इस पाठ फ़ाइल में प्रतिबद्ध संदेश डालने के लिए हैं, फिर सहेजें और छोड़ें।

आप इस आदेश के साथ उपयोग करने वाले डिफ़ॉल्ट टेक्स्ट एडिटर को बदल सकते हैं:

git config --global core.editor "nano"

आपको नैनो को बदलना होगा जो भी कमांड आपके टेक्स्ट एडिटर को आम तौर पर खोल देगा।


15
क्या आपको --globalडिफ़ॉल्ट बदलने के लिए जोड़ना नहीं है ?
ज़नार्कस

4
@Znarkus अच्छा बिंदु। अधिक जानकारी के लिए यहां देखें । मूल रूप से, दिया गया उत्तर केवल वर्तमान परियोजना के लिए सेटिंग बदल देगा, जबकि --globalवर्तमान उपयोगकर्ता के --systemलिए इसे बदल देगा , और उस कंप्यूटर पर सभी के लिए इसे बदल देगा।
मैट फेनविक

24
हालांकि यह उत्तर अच्छी जानकारी रखता है, लेकिन यह वास्तविक प्रश्न को संबोधित नहीं करता है।
एड्रियन श्मिट

5
मैं यह नहीं देखता कि क्यों इस सवाल का जवाब दो के रूप में upvotes है कि वास्तव में सवाल का जवाब देता है। यह नहीं करता।
जोहान

2
@ जोहान, तुम गलत नहीं हो, लेकिन इस पर लड़खड़ाते हुए, मुझे यह जवाब बेहद मददगार लगा। इसलिए मैंने इसे अपडाउन किया।
1

65

जैसा कि बेन कोलिन्स ने उल्लेख किया है , बिना-m "..." इनलाइन टाइप करने तर्क के (जो आम तौर पर एक बुरा विचार है क्योंकि यह आपको संक्षिप्त होने के लिए प्रोत्साहित करता है), यह "बड़ा पाठ फ़ाइल" जो खोला गया है वह एक विंडो है जिसमें प्रतिबद्ध संदेश टाइप करना है ।

आमतौर पर पहली पंक्ति में एक सारांश लिखने की सलाह दी जाती है, एक पंक्ति छोड़ें, और फिर नीचे अधिक विस्तृत नोट लिखें; यह उन कार्यक्रमों में मदद करता है जो एक उपयुक्त विषय पंक्ति के साथ प्रतिबद्ध संदेशों को ईमेल करते हैं और शरीर में किए गए परिवर्तनों की पूरी सूची है।

EDITORशेल चर को बदलने के बजाय , आप अपनी ~/.gitconfigफ़ाइल में अतिरिक्त लाइनें जोड़कर उपयोग किए गए संपादक को भी बदल सकते हैं :

[core]
    editor = emacs
    excludesfile = /Users/will/.gitignore

उस दूसरी पंक्ति का वास्तव में आपकी समस्या से कोई लेना-देना नहीं है, लेकिन मुझे यह वास्तव में उपयोगी लगता है, इसलिए मैं अपनी ~/.gitignoreफ़ाइल को उन सभी फाइलपेट्स के साथ आबाद कर सकता हूं जिन्हें मैं जानता हूं कि मैं कभी भी, कभी भी, रिपॉजिटरी के लिए प्रतिबद्ध नहीं होना चाहता।


36

जो पाठ फ़ाइल खोली जा रही है, वह वर्तमान प्रतिबद्ध संचालन का सारांश है। Git कमिट आपको इस फाइल में ड्राप करता है इसलिए आप फाइल के शीर्ष पर एक कमिट मैसेज जोड़ सकते हैं। एक बार जब आप अपना संदेश जोड़ लेते हैं, तो बस इस फ़ाइल से सहेजें और बाहर निकलें।

इस कमांड पर "-m msg" स्विच भी है जो आपको कमांड लाइन पर प्रतिबद्ध संदेश जोड़ने की अनुमति देता है।


हाय लू, मैं भी GIt पर एक शुरुआत कर रहा हूँ। मुझे लगता है कि मेरे पास मौजूद होने के बाद या टेक्स्ट फ़ाइल मौजूद है, जीआईटी ने वास्तव में मंचन नहीं किया है और जिस संदेश को मैंने लिखा है वह प्रतिबद्ध है। इसलिए, इस पाठ फ़ाइल में संदेश को जोड़ने का क्या मतलब है अगर मैं लिखने के बाद कमिट नहीं कर सकता और इसे बाहर कर सकता हूं। (कृपया मुझे सही करें अगर मैं गलत था, बहुत धन्यवाद)
SLN

@SLN जिस परिदृश्य को आप रेखांकित कर रहे हैं वह बहुत स्पष्ट नहीं है। मैं एक अनुमान लगाने जा रहा हूं और सुझाव दूंगा कि हो सकता है कि आपने प्रतिबद्धता के लिए कोई फ़ाइल नहीं रखी है, इसलिए आपके द्वारा किए गए प्रयास ने कुछ नहीं किया। पहले चरण की फ़ाइलों के लिए "git add" का उपयोग करें जो आप कमिट करना चाहते हैं, फिर वास्तविक कमिट करने के लिए "git कमिट" करें।
लू

15

यदि आप Mac OS X पर हैं और BBEdit का उपयोग कर रहे हैं, तो आप इसे प्रतिबद्ध संदेशों के लिए पसंद के संपादक के रूप में सेट कर सकते हैं:

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

एक बार संपादित करने के बाद, फ़ाइल को सहेजें और बंद करें और टिप्पणियों के लिए git इसका उपयोग करेगा।


15

यह मानते हुए कि आपका संपादक vi / vim में चूक करता है, आप टाइप करके प्रतिबद्ध संदेश संपादक से बाहर निकल सकते हैं:

:x

जो कमिट मैसेज फाइल को सेव और एग्जिट करेगा। फिर आप सामान्य git कमांड सेक्शन में वापस जाएंगे।

अधिक vi आदेश:
http://www.lagmonster.org/docs/vi.html


9
यदि आप मेरी तरह हैं, तो आप इन्सर्ट / रिप्लेस मोड (यानी कमिट मैसेज टाइप करना) में थे। यदि ऐसा है, तो आपको बचाने और बाहर निकलने के लिए escटाइप :xकरने से पहले कमांड मोड में जाना होगा ।
मार्टिन कार्नी

1
यह मानते हुए कि उनका संपादक vi / vim में चूक करता है। यह हर किसी के लिए सच नहीं होगा। निश्चित रूप से इस emacs उपयोगकर्ता के लिए नहीं;)
खतरा

इससे मुझे बहुत परेशानी का सामना करना पड़ा। बहुत बहुत धन्यवाद
दान

12

जैसा कि सभी ने कहा है कि यह वही है जहाँ आप अपनी टिप्पणी जोड़ते हैं - लेकिन कुछ के लिए यह अभी भी जासूसी हो सकती है यदि आपने अपनी संपादक सेटिंग्स को कॉन्फ़िगर नहीं किया है, और आपको पता नहीं है कि VI क्या है: तो आप सदमे में हो सकते हैं , क्योंकि आप सोचेंगे कि आप अभी भी जीआईटी-बैश में हैं

उस मामले में आप वास्तव में एक टेक्स्ट एडिटर में हैं जो चीजों से निपटने के कुछ दिलचस्प तरीकों के साथ हैं और आदेशों का यह सेट आपकी मदद कर सकता है ताकि आप अपनी पहली कमिट को पा सकें और फिर एक एडिटर को कॉन्फ़िगर करें जिसे आप परिचित हैं या उसका उपयोग करें यह कैसे उपयोग करने के लिए सीखने का अवसर।


8
मुझे पता है कि vi में अंत हमेशा मुझे झकझोरता है :)
रॉबर्टसन

1
चीजें अब बहुत ज्यादा मायने रखती हैं। +1
मैट एलेन

11

करने का -mविकल्प आपको कमांड लाइन पर एक प्रतिबद्ध संदेश दर्ज करने देता है:

git commit -m "my first commit"

7

जब आप एक नया कमिट बनाते हैं, तो git एक टेक्स्ट एडिटर को निकालता है और उसमें कुछ चीजें लिखता है।

इस टेक्स्ट एडिटर का उपयोग करते हुए, इरादा आपके लिए प्रतिबद्ध संदेश लिखने का है, जो आपके द्वारा बनाए गए कमिट से संबद्ध होगा।

आपके द्वारा ऐसा करने के बाद, टेक्स्ट एडिटर को सेव और एग्जिट कर सकते हैं। आपके द्वारा लिखित संदेश के रूप में Git का उपयोग किया जाएगा।

इस संदेश में एक विशेष संरचना है, जिसे निम्नानुसार वर्णित किया गया है:

कमिट मैसेज की पहली लाइन मैसेज हेडर (या टाइटल) के रूप में उपयोग की जाती है। कमेट हेडर की पूर्वनिर्धारित लंबाई 40 वर्णों से कम है, क्योंकि यह वर्णों की संख्या है जो इसे दिए जाने से पहले दिए गए रिपॉजिटरी के कमिट्स टैब पर प्रदर्शित करता है, जिसे कुछ लोग चिढ़ पाते हैं।

हेडर की रचना करते समय, पहले शब्द के लिए एक बड़े अक्षर का प्रयोग करते हुए, वर्तमान काल क्रिया सामान्य अभ्यास है, हालांकि यह बिल्कुल भी आवश्यक नहीं है।

एक नई पंक्ति हेडर और संदेश के मुख्य भाग को चित्रित करती है।

शरीर को जो कुछ भी आप पसंद कर सकते हैं शामिल कर सकते हैं। आपकी ओर से शुरू किए गए परिवर्तनों का अवलोकन उचित है। कुछ थर्ड पार्टी एप्लिकेशन का उपयोग करने वाली जानकारी में विभिन्न प्रकार के हुक सेट करने के लिए प्रतिबद्ध संदेश शामिल हैं (मैं दो नाम रखने के लिए जेरिट और पिवटल ट्रैकर सोच रहा हूं)।

यहाँ एक छोटा और मीठा उदाहरण है। एक अग्रणी #एक टिप्पणी को दर्शाता है।

Gitignore index.pyc

Ignore gunicorn generated binary file
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch dev
# Your branch is ahead of 'origin/dev' by 10 commits.
#   (use "git push" to publish your local commits)
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   .gitignore
#

यहाँ एक मिस्टर टोरवाल्ड्स एक अच्छी प्रतिबद्धता के बारे में बताता है।

और यहाँ Tpope भी इसी तरह है।

जैसा कि कई अन्य उत्तरों में कहा गया है, डिफ़ॉल्ट संपादक को बदलना कमांड लाइन पर एक-लाइनर है।

मेरी प्राथमिकता के लिए:

git config --global core.editor "vim"

2
यह प्रश्न के लिए स्वीकृत उत्तर होना चाहिए।
mppfiles 13

6

अपना संदेश लिखने के बाद, ZZ से बचने की कोशिश करें। जैसा कि दूसरों ने कहा है कि जब आप उस कमिट कमांड को चलाते हैं तो यह वास्तव में संदेश में प्रवेश करने के लिए एक टेक्स्ट एडिटर चलाता है। मेरे मामले में (OS X) यह VI था, जिसे मैंने कुछ खुदाई के बाद पता लगाया। उस स्थिति में, ZZ दर्ज करें "कमांड" मोड में जाने के लिए (INSERT मोड के विपरीत) ZZ दर्ज करें। मुझे यकीन है कि कार्य को पूरा करने के अन्य तरीके हैं, लेकिन यह मेरे लिए था। VI या emacs का कभी उपयोग नहीं करने के बाद यह मेरे लिए स्पष्ट रूप से स्पष्ट नहीं था और मेरे द्वारा उपयोग किए जाने वाले किसी भी शुरुआती गाइड में इसका उल्लेख नहीं किया गया था। उम्मीद है कि यह मदद करता है।


4

git commitआदेश संपादक में निर्दिष्ट खुल जाएगाEDITOR वातावरण चर तो आप एक टिप्पणी प्रतिबद्ध डाल सकते हैं। लिनक्स या बीएसडी सिस्टम पर, यह डिफ़ॉल्ट रूप से vi होना चाहिए, हालांकि किसी भी संपादक को काम करना चाहिए।

बस अपनी टिप्पणी दर्ज करें और फ़ाइल को सहेजें।


2

मैं उलझन में था क्योंकि मैं VIM में w: के बाद फ़ाइल नाम दर्ज करने का प्रयास करता रहा। यह प्रतिबद्ध ट्रिगर नहीं करता है। इसके बजाय मुझे एक संदेश मिला "खाली प्रतिबद्ध संदेश के कारण घृणा करना।" के बाद एक फ़ाइल नाम न रखें: w। : w डिफ़ॉल्ट रूप से फ़ाइल को .it / COMMIT_EDITMSG में सहेजता है। फिर: कमिट पूरा करने के लिए बाहर निकलने के लिए q। आप गिट लॉग के साथ परिणाम देख सकते हैं।


या आप बस का उपयोग कर सकते हैं: एक्स को बचाने और बाहर निकलने के लिए।
टीजे एलिस

2

अब जब मैंने अपने संपादक को emacs में बदल दिया है, तो सब कुछ ठीक है।

लेकिन इससे पहले कि मैं यह निर्धारित करता, "git प्रतिबद्ध -a" ने खुले gedit किया, लेकिन तुरंत "खाली प्रतिबद्ध संदेश के कारण गर्भपात करने की प्रतिबद्धता" के साथ समाप्त हो गया। फ़ाइल को gedit से सहेजने का कोई प्रभाव नहीं पड़ा। स्पष्ट रूप से संपादक को "git config --global core.editor" gedit "" के साथ सेट करने का परिणाम समान था।

वहाँ emacs के साथ कुछ भी गलत नहीं है, लेकिन जिज्ञासा से बाहर यह काम gedit के साथ क्यों नहीं है, और क्या इसे काम करने का कोई तरीका है?

धन्यवाद।


अगर gedit पहले से चल रहा है, तो "gedit file.txt" करने से फ़ाइल मौजूदा विंडो में खुलेगी और तुरंत वापस आ जाएगी ... आपको इसे वास्तविक प्रश्न के रूप में पोस्ट करना चाहिए, विशेष रूप से gitit को git के साथ उपयोग करने के बारे में।
आराकनिद ११'११

6
इसमें भी भाग गया। : यदि आप 'स्टैंडअलोन' मोड में चलाने के लिए एडिट की स्थापना करके इसे ठीक कर सकते हैंgit config --global core.editor "gedit -s"
brittohalloran

2

ओएस इलेवन का उपयोग करने वाले आप में से उन लोगों के लिए इस कमांड को अच्छी तरह से काम करने के लिए मिला:
git config --global core.editor "open -t -W"

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

Apple डेवलपर लाइब्रेरी - ओपन कमांड

आप यह भी कोशिश कर सकते git config --global core.editor "open -e -W"हैं कि यदि आप चाहते हैं कि डिफ़ॉल्ट संपादक क्या है, इसकी परवाह किए बिना हमेशा टेक्स्टडिट खोलें।


1

हाँ, सुनिश्चित करें कि आपके पास एक समझदार संपादक सेट है। यह निश्चित न करें कि आप डिफ़ॉल्ट संपादक क्या हैं, लेकिन यदि, मेरी तरह, यह नैनो है (आप टाइप करने के बाद शीर्ष के पास कहीं कहेंगे) तो आपको बस एक टिप्पणी में टाइप करना होगा और फिर समाप्त करने के लिए Ctrl-x मारा। फिर वाई मारा, इसके बाद कमिट दर्ज करें।

इसके अलावा, यदि आप उन फ़ाइलों की एक साधारण सूची देखना चाहते हैं, जिन्हें आप पहले से कोशिश करने के बजाय एक विशाल अंतर सूची के बजाय कमिट कर रहे हैं

git diff --name-only

1

संशोधन नियंत्रण करते समय, आपको हमेशा यह बताना चाहिए कि आपके द्वारा किए गए परिवर्तन क्या हैं। आमतौर पर पहली बार आपके पास एक टिप्पणी होती है जैसे कि "प्रारंभिक प्रतिबद्ध।"

हालाँकि लंबे समय में आप प्रत्येक कमेंट के लिए एक अच्छी टिप्पणी करना चाहते हैं। आप फार्म के कुछ चाहते हैं:

जोड़ा प्रायोगिक सुविधा एक्स।

X, Z में फीचर Y के प्रदर्शन को बढ़ाएगा। क्या आपको X की जरूरत है कि इसे -x या --feature-eks स्विच के साथ सक्रिय करें। यह पता # 1138 अनुरोध करता है।


1

टर्मिनल के लिए नया होने के नाते, "एस्केप और फिर जेडजेड" ने मेरे लिए काम किया, मैं इस मुद्दे को महीनों से झेल रहा हूं और इसके आस-पास भी रास्ता नहीं खोज सका।

आपकी सरल सलाह के लिए धन्यवाद TheGeoff!


0

निम्नलिखित संभवतः सभी परिवर्तनों को करने का सबसे आसान तरीका है:

git commit -a -m "Type your commit message here..."

बेशक कमिट करने के बहुत अधिक विस्तृत तरीके हैं, लेकिन यह आपको शुरू करना चाहिए।

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