2012-04-19 22 views
5

मैंने प्रतिबद्धता पर राइट-क्लिक करके और "फ़ाइल में प्रतिबद्ध लिखें" का चयन करके gitk से फ़ाइल में एक प्रतिबद्धता लिखी है।मैं गिट के "फ़ाइल में प्रतिबद्ध लिखें" के विपरीत कैसे करूं?

मैं इस फ़ाइल से प्रतिबद्ध कैसे आवेदन करूं? मैं git apply, git add और git commit कॉम्बो कर सकता हूं, लेकिन क्या आउटपुट (प्रतिबद्ध संदेश और मेटा-डेटा के साथ) लेने के लिए एक-चरण कमांड नहीं है और इसे ऐसा करने के लिए प्रतिबद्ध है?

+1

यह बहुत खराब कहा गया है - Git रूप में एक ही शब्दावली का उपयोग करें। मैं समझ नहीं पा रहा हूं कि 'फ़ाइल में एक प्रतिबद्धता' लिखा गया है और मैं गिट-गुई बनाए रखता हूं। क्या आपने फ़ाइल में बदलाव किए हैं और फिर किसी पैच को किसी भी तरह उत्पन्न करते हैं? यदि आप उपयोगी सहायता प्राप्त करने की अपेक्षा करते हैं तो विवरण महत्वपूर्ण है। पैच जेनरेट किया गया था - * बिल्कुल *। जैसा कि आपने ध्यान दिया है, गिट लागू करें और गिट विभिन्न प्रारूप फाइलों को स्वीकार कर रहा हूं - एक पैच की अपेक्षा करता है, अन्य ईमेल इनलाइन पैच के साथ और जानकारी को प्रतिबद्ध करता है। मुझे संदेह है कि नीचे दिया गया जवाब वास्तव में सही है। – patthoyts

+2

@patthoyts मैं "फ़ाइल में प्रतिबद्ध लिखें" बटन पर क्लिक करने का और वर्णन कैसे करूं? –

+0

ऐसा लगता है कि 'gitk' में "फ़ाइल लिखने के लिए प्रतिबद्धता" विकल्प है, जो एक संवाद लाता है जो' git diff-tree --stdin -p --pretty' कमांड करता है। 'गिट एम' स्पष्ट रूप से इस प्रारूप को समझ में नहीं आता है। 'गिट लागू 'केवल diffs लागू करने के लिए है, यानी यह प्रतिबद्ध वस्तु नहीं बनाएगा। –

उत्तर

2

मैं लिनक्स का उपयोग कर रहा हूं, लेकिन मुझे लगता है कि मैं देख रहा हूं कि आप किस बारे में बात कर रहे हैं। gitk में "प्रतिबद्ध करने के लिए प्रतिबद्ध करें" विकल्प है जब एक प्रतिबद्धता पर राइट-क्लिक करें, जो एक संवाद लाता है जो डिफ़ॉल्ट रूप से git diff-tree --stdin -p --pretty कमांड करता है।

git apply केवल diffs लागू करने के लिए है, यानी यह प्रतिबद्ध ऑब्जेक्ट नहीं बनाएगा जिससे इसका उपयोग नहीं किया जाना चाहिए। इस ऑपरेशन को करने के लिए git am सही उपकरण होना चाहिए, क्योंकि यह प्रतिबद्ध वस्तुओं को बनाता है। हालांकि, यह उपरोक्त आदेश द्वारा प्रारूप आउटपुट को समझ में नहीं आता है, और जो त्रुटि आप देख रहे हैं उसे बनाता है।

संभवतः git am प्रारूप का उपयोग करके पैच बनाने के लिए सबसे आसान विकल्प के बजाय git format-patch का उपयोग करना समझता है। को git diff-tree प्रारूप को समझने के लिए git am को कॉरपोरेट करने का एक तरीका हो सकता है, लेकिन मैं पैच को बहुत कुछ नहीं करता इसलिए मुझे इसके बारे में पता नहीं है।

0

git am जो भी आप खोज रहे हैं वह कर सकता है। इनपुट के रूप में git format-patch द्वारा जेनरेट किए गए पैच लेते हैं। मुझे नहीं पता कि git-gui क्या थका रहा है।

+0

"पैच प्रारूप पहचान विफल रही।" अजीब तरह की वजह से मैंने उसी फाइल पर उसी गाड़ी के साथ फ़ाइल को उसी रेपो पर जेनरेट किया था। –

+0

यह कैसे काम करना चाहिए? मैन्युअल पृष्ठ पैरामीटर के रूप में मेलबॉक्स के बारे में बात करता है, जो यह इंगित करता है कि यह सही आदेश नहीं है। –

+1

कुछ खुदाई करने के बाद, कमांड वास्तव में एक मेलबॉक्स प्रारूप की अपेक्षा करता है, पैच नहीं। –

2

कोई एक, प्रश्न का वास्तविक उत्तर प्रदान किया है लगता है इसलिए यहाँ मैं क्या https://github.com/sinsunsan/archiref_wiki/wiki/Git-howto

patch -p1 < patch-file 

इस पैच फ़ाइल द्वारा उत्पादित लेता है 'फाइल करने के लिए प्रतिबद्ध लिखें' से मिला है, यह बताता है कि अनदेखी करने के लिए पथ का पहला स्तर (-पी 1) यानी ए /, बी/फ़ाइल में, और डिस्क पर मौजूदा फ़ाइलों पर लागू होता है। परिणाम आपके काम कर पेड़ में तो है, और प्रतिबद्ध एक नया रूप प्रतिबद्ध जा सकता है:

git commit -am'Commit message here please.'