बिना कमिट मैसेज (पिछले एक का पुन: उपयोग) किए बिना एक संशोधन कैसे करें?


657

क्या आपके प्रतिबद्ध संदेश को संशोधित करने के विकल्प के साथ पॉपिंग के बिना vi(या आपके $EDITOR) एक संशोधन करने का एक तरीका है , लेकिन बस पिछले संदेश का पुन: उपयोग कर रहा है?


6
मैं संशोधन की बुराइयों के कठिन तरीके को सीखने के बाद अपने स्वयं के प्रश्न को कम कर दूंगा।
श्रीधर सरनोबत

28
जब तक आप कुछ नियमों का पालन करते हैं (जैसे कि किसी चीज को संशोधित करना जो पहले से ही धकेल दिया जाता है) कोई कारण नहीं है कि संशोधन के लिए एक बुरी बात है।
पौल्ब २०'१४ को

3
एक ही तार्किक परिवर्तन के दौरान काम के बीच-बीच में कमिटिंग के लिए संशोधन नहीं किया जाना चाहिए। कि आप स्थानीय स्तर पर ठीक से प्रतिबद्ध होना चाहिए और उसके बाद के लिए छुटकारा पाने एक बार समाप्त (@ श्रीधर-सरनोबत) इतिहास प्रतिबद्ध
DBCerigo

3
मैं @DBCerigo से पूरी तरह सहमत हूँ। एकमात्र स्थिति जो मुझे उपयोगी लगती है वह यह है कि जब मैं पिछली कमिट में फाइल स्टेज करना भूल गया था (उदाहरण के लिए क्योंकि यह नया है और इसलिए जीआईटी कमिट-ए चलाते समय ऑटो का मंचन नहीं होता है) और इसे दोबारा बनाना चाहते हैं।
श्रीधर सरनोबत

1
यदि आप इतिहास को बदलने के खतरों को पहचानते हैं तो भी यदि आप अपने सबसे हालिया प्रतिबद्ध संदेश से नाखुश हैं और इसे फिर से तैयार किए बिना फिर से तैयार करना चाहते हैं तो भी संशोधन करना एक और समय उपयोगी है।
श्रीधर सरनोबत

जवाबों:


1010

जीआईटी 1.7.9 संस्करण के बाद git commit --amend --no-editसे आप अपना परिणाम प्राप्त करने के लिए भी उपयोग कर सकते हैं ।

ध्यान दें कि इसमें अन्य प्रतिबद्ध से मेटाडेटा शामिल नहीं होगा जैसे कि टाइमस्टैम्प जो आपके लिए महत्वपूर्ण हो सकता है या नहीं।


42
आप एक उपनाम जोड़कर -no-edit फ्लैग को डिफ़ॉल्ट करना भी आसान बना सकते हैं: "संशोधन = प्रतिबद्ध -a-amend --no-edit"
Jherico

1
@ जेरिको मैं सुझाव देना चाहूंगा-ए। कृपया परमाणु करें, यह समीक्षा या
रीबेस

120

git commit -C HEAD --amendजो चाहोगे, करोगे। -Cविकल्प एक और प्रतिबद्ध से मेटाडाटा लेता है।


15
सिर्फ एंडी के जवाब में जोड़ने के लिए। यदि यह ऐसा कुछ है जो आप अक्सर करते हैं तो आप इसका उपयोग करने के लिए एक उपनाम सेट कर सकते हैं git config --global alias.amend 'commit --amend -C HEAD'। फिर आप git amendशॉर्टकट के रूप में उपयोग कर सकते हैं ।
मिकज

9
चलो दोस्तों, आलसी मत बनो, अपग्रेड git और निर्मित कमांड का उपयोग करें जो Shaggle का सुझाव देता है! हालांकि एक -C विकल्प के लिए एक।
दिमित्रिस बाल्टस

4
न केवल टाइमस्टैम्प, बल्कि लेखकों की जानकारी भी!
15:13 बजे user1338062

3
@RyanCastner वास्तव में, आप जिस टिप्पणी का उल्लेख कर रहे हैं, वह 2013 से थी। मेरे पास वर्तमान में चल रहे git संस्करण के साथ --amend, यहां तक ​​कि बिना किसी अन्य विकल्प के भी, लेखक की तारीख को संरक्षित करता है (लेकिन प्रतिबद्ध तिथि को बदलता है)। जैसे, मैंने अपनी पुरानी टिप्पणी को हटा दिया है।
रुबेन वेरबर्ग

2
वास्तव में यह उत्तर एक अलग तरीके से मूल्यवान है भले ही यह स्वीकृत उत्तर न हो। अन्य उत्तर के विपरीत, आपको उपयोग करने की आवश्यकता नहीं है —amend। आप एक नई कमिट बना सकते हैं लेकिन पिछले कमिट के समान संदेश का उपयोग कर सकते हैं। यह उपयोगी नहीं लग सकता है, लेकिन डिफ़ॉल्ट रूप से मेरा प्रतिबद्ध संदेश जब मैं सिर्फ एक अच्छा प्रतिबद्ध संदेश सोचने के बिना अपने काम को बचा रहा हूं, तो मैं संदेश का पुन: उपयोग करता रहता हूं—message=“Work in progress (untested)”
श्रीधर सरनोबत

67

एक और (मूर्खतापूर्ण) संभावना यह है git commit --amend <<< :wqकि क्या आपको vi (m) मिल गया है $EDITOR


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

6
... <<< ZZयहां तक कि कम लिख कर हो सकता है;)
रुस्लान

6
..और उससे भी कम - ... <<< :x:)
skwisgaar

3
मुझे नहीं लगता कि यह मूर्खतापूर्ण है। यह vi को खोलने वाले किसी भी कमांड के वर्कफ़्लो को बेहतर बनाने का एक शानदार तरीका है।
बी सेवन

12
ट्रिपल कोण कोष्ठक। यह नया है।
ऑलिगॉफ्रेन

16

स्वीकृत उत्तर पर विस्तार करने के लिए, आप यह भी कर सकते हैं:

git commit --amend --no-edit -a

वर्तमान में परिवर्तित फ़ाइलों को जोड़ने के लिए।


11

उपनाम बनाने के लिए स्वीकृत उत्तर का उपयोग करना

 oops = "!f(){ \
    git add -A; \
    if [ \"$1\" == '' ]; then \
        git commit --amend --no-edit; \
    else \
        git commit --amend \"$@\"; \
    fi;\
}; f"

तो आप कर सकते हैं

git oops

और यह सब कुछ जोड़ देगा, और एक ही संदेश का उपयोग करके संशोधन करेगा

या

git oops -m "new message"

संदेश को बदलने के लिए

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