Git am और git के बीच अंतर क्या है?


134

दोनों git amऔर git applyपैच लागू करने के लिए इस्तेमाल किया जा सकता। मैं अंतर देखने में विफल हूं। मुझे अब एक अंतर दिखाई देता है: git amस्वचालित रूप से कमिट करता है जबकि git applyकेवल फाइलों को छूता है लेकिन एक कमिट नहीं बनाता है। क्या केवल यही अंतर है?


11
amके संक्षिप्त नाम के रूप में सोचा जा सकता है Apply Mail...
फिलिप ओकले

जवाबों:


144

इनपुट और आउटपुट दोनों अलग हैं:

  • git applyएक पैच लेता है (उदाहरण के लिए आउटपुट git diff) और इसे कार्यशील निर्देशिका (या इंडेक्स, यदि --indexया --cachedउपयोग किया जाता है) पर लागू होता है ।
  • git amईमेल संदेशों (जैसे कि आउटपुट git format-patch) के रूप में स्वरूपित कमिट का मेलबॉक्स लेता है और उन्हें वर्तमान शाखा में लागू करता है।

git amgit applyपर्दे के पीछे का उपयोग करता है , लेकिन पहले ( Maildirया पढ़ने mbox, और ईमेल संदेशों को पार्स करना) और बाद में (कमिट्स बनाना) अधिक काम करता है।


6
नोट: git applyलगता है कि git format-patchआउटपुट को भी स्वीकार करना होगा।
सिरो सेंटिल्ली 郝海东 i i i i '

7
git applygit format-patchसाथ ही साथ आउटपुट के लिए भी काम करेगा, लेकिन बदलाव अस्थिर होंगे और इसके लिए प्रतिबद्ध होने की आवश्यकता होगी (इस प्रकार वे जिस सूचकांक में लागू होते हैं, वहां एक अलग प्रतिबद्ध बिंदु बनाते हैं)। आपके साथ git amयह लागू होने वाले सूचकांक में प्रतिबद्ध जानकारी (लेखक, आदि के साथ) होगी। git applyतब आपके रेपो (खराब) को पैच करने के लिए है, git amकानूनी सुविधा में परिवर्तन कर सकते हैं और इसे अपने रेपो (पसंदीदा दृष्टिकोण) में शामिल कर सकते हैं।
प्रसून जोशी

18

git applyसीधे भिन्न (जैसे से git diff) git amको लागू करने के लिए है, जबकि ईमेल से पैच के अनुक्रम और अनुक्रमों को लागू करने के लिए है, या तो एमबॉक्स या मेलडिर प्रारूप है और "विपरीत" है git format-patchgit amईमेल संदेशों से प्रतिबद्ध संदेश और लेखक का विवरण निकालने की कोशिश करता है, यही वजह है कि यह कमिट कर सकता है।


9

साथ git amआप पैच लागू इसलिए यदि आप का उपयोग करें git statusयदि आप किसी भी स्थानीय परिवर्तन नहीं देख सकेंगे।

git applyआपको स्रोत फ़ाइलों में परिवर्तन करने में सक्षम बनाता है जैसे कि आप अपने आप से कोड लिख रहे थे, फलस्वरूप git statusऔर git diffआपके द्वारा लागू किए गए पैच में किए गए परिवर्तनों को आउटपुट करेंगे, फिर आप अधिक बदलावों को ठीक कर सकते हैं / जोड़ सकते हैं और उन्हें एक नए पैच के रूप में जमा कर सकते हैं। ।

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