मैं अपनी नवीनतम गिट कमिट से केवल एक पैच कैसे बना सकता हूं?


186

मैं पिछले किए गए कमेंट से एक पैच बनाने की जादुई कमान की तलाश कर रहा हूं।

मेरा वर्कफ़्लो कभी-कभी ऐसा दिखता है

vi some.txt
git add some.txt
git commit -m "some change"

और अब मैं सिर्फ लिखना चाहता हूं

git create-patch-from-last-commit-to-file SOME-PATCH0001.patch

लेकिन मुझे इसके बजाय क्या करना चाहिए create-patch-from-last-commit-to-file?


संभावित डुप्लिकेट के लिए
जेनिट

जवाबों:


297

सामान्य रूप में,

git format-patch -n HEAD^

(कई विकल्पों के लिए मदद की जाँच करें), हालांकि यह वास्तव में उन्हें मेल करने के लिए है। सिर्फ एक ही कमिट के लिए

git show HEAD > some-patch0001.patch

आपको एक प्रयोग करने योग्य पैच देगा।


18
"git show HEAD> some-patch0001.patch" के साथ केयरफुल रहें, अगर इसे रंगीन टर्मिनल में बुलाया जाए तो यह फाइल में एस्केप एस्केप को भी डुबो देता है।
हिच

12
आप भी इस्तेमाल कर सकते हैं git diff > change.patch। आप एक संशोधन सीमा भी शामिल कर सकते हैं और यह आपको बिना परिवर्तन किए हुए पैच बनाने की अनुमति देता है। हालाँकि, बड़ा अंतर यह है कि इसमें बाइनरी फ़ाइलों में अंतर शामिल नहीं होगा । इसका उत्तर देखिए 'git format-पैच' और 'git diff' में क्या अंतर है? अधिक विस्तार के लिए।
रंगी कीन

4
@ नहीं लिनक्स पर यह नहीं है
रॉबिन ग्रीन

4
नहीं, क्योंकि ऐसा नहीं है कि पहली पंक्ति क्या कहती है। या तो git format-patch -1या git format-patch -n HEAD^काम करना चाहिए।
बेकार

4
धन्यवाद, मैं समझ नहीं पाया था कि यह अक्षर 'n' था, मुझे लगा कि यह एक प्लेसहोल्डर है (प्रारूप-पैच में '-n' और '<- n>' विकल्प दोनों हैं)।
.तिने

60

@ उत्तर से लेते हुए, आप सामान्य फॉर्म का भी उपयोग कर सकते हैं, जिसमें अंतिम प्रतिबद्धताओं के लिए कोई पैरामीटर नहीं है और इसे एक फाइल में रखें:

git format-patch HEAD^ --stdout > patchfile.patch

या, खिड़कियों के उपयोगकर्ताओं के लिए क्लीनर होने पर जब उन्हें दोगुना करके देखभाल से बचना पड़ता है:

git format-patch HEAD~1 --stdout > patchfile.patch

2
मेरे लिए काम किया - धन्यवाद। यदि आप Windows और Git का उपयोग करते हैं, तो आपको गाजर से बचना होगा (मुझे पता है): "git format-patch HEAD ^^ --stdout> patchfile.patch"
स्टीव

3
उस देखभाल से बचने की विंडोज समस्या से बचने के लिए (जो इसे एक अलग वैध कमांड की तरह दिखता है), आप के विकल्प का उपयोग कर सकते हैं git format-patch HEAD~1। मुझे लगता है कि विंडोज पर कम भ्रमित होना समाप्त होता है।
माइकल बूर

30

एक और तरीका है, अगर उस विशेष प्रतिबद्ध की आईडी है, तो आप उपयोग कर सकते हैं,

git format-patch -1 {commit-id}

9

आपको -pलॉग इन करने के लिए विकल्प की आवश्यकता है :

git log -1 -p --pretty='%b'

यदि आप फ़ाइल की शुरुआत में ईमेल / तारीख / विषय रेखा से परवाह नहीं करते हैं तो इसका उपयोग करें।
रयान एच।

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