आप एक git diff फ़ाइल कैसे लेते हैं, और इसे स्थानीय शाखा में लागू करते हैं जो उसी रिपॉजिटरी की एक प्रति है?


491

मेरे पास एक सहकर्मी द्वारा बनाई गई .diff फ़ाइल है, और उस भिन्न फ़ाइल में सूचीबद्ध परिवर्तनों को ठीक उसी रिपॉजिटरी की मेरी स्थानीय शाखा में लागू करना चाहते हैं। मेरे पास उस कार्यकर्ता के पीसी या शाखा तक पहुंच नहीं है जिसका उपयोग इस अंतर फ़ाइल को उत्पन्न करने के लिए किया गया था।

जाहिर है कि मैं लाइन से लाइन में जा सकता था और सब कुछ फिर से टाइप कर सकता था, लेकिन मैं सिस्टम को मानवीय त्रुटि के अधीन नहीं कर सकता था। ऐसा करने का सबसे आसान तरीका क्या है?

जवाबों:


746

फ़ाइल को अपने रिपॉजिटरी के मूल में कॉपी करें और फिर करें:

git apply yourcoworkers.diff

applyकमांड के बारे में अधिक जानकारी इसके मैन पेज पर उपलब्ध है ।

वैसे: फ़ाइल द्वारा संपूर्ण कमिट का आदान-प्रदान करने का एक बेहतर तरीका git format-patchप्रेषक और फिर git amरिसीवर पर आदेशों का संयोजन है , क्योंकि यह लेखक की जानकारी और प्रतिबद्ध संदेश को भी स्थानांतरित करता है।

यदि पैच एप्लिकेशन विफल हो जाता है और यदि कमिट्स से उत्पन्न होता है, तो वास्तव में आपके रेपो में होता है, तो आप उस -3विकल्प का उपयोग कर सकते हैं applyजो परिवर्तनों में विलय करने का प्रयास करता है।

यह यूनिक्स पाइप के साथ भी निम्नानुसार काम करता है:

git diff d892531 815a3b5 | git apply

3
उत्तर के लिए धन्यवाद, लेकिन इससे एक त्रुटि का कारण कहा गया, पैच विफल रहा: फ़ाइलनाम। Pp: 202 त्रुटि: फ़ाइल नाम। Pp: पैच लागू नहीं होता है। अच्छी खबर यह है कि इसकी फ़ाइल में पहला फ़ाइल नाम नहीं है, इसलिए यह कम से कम फ़ाइल को संसाधित करने में सक्षम होता है। कोई विचार?
माइक_के सेप

4
आपको उस फ़ाइल में परिवर्तन भी प्रतीत होते हैं जो पैच को काम करने से रोकते हैं। इसे हल करने के लिए आप अपने परिवर्तन कर सकते हैं, एक नई शाखा बना सकते हैं, इसे उस स्थिति में रीसेट कर सकते हैं जहाँ आप और आपके सहकर्मी ने विराम दिया है, पैच लागू करें, इसे लागू करें और फिर दोनों शाखाओं को मिला दें।
फिलिप

3
@orlybg जब आपने इसे अभी तक प्रतिबद्ध नहीं किया है, तो git reset --hardअपने काम के पेड़ को अंतिम प्रतिबद्ध पर वापस करने के लिए करें। जब आप पहले से ही इसे प्रतिबद्ध करते हैं, तो उस संशोधन को संलग्न करें जिसे आप वापस करना चाहते हैं।
फिलिप

5
@orlybg क्षमा करें, लेकिन फिर आप खराब हैं। Git केवल एक चेकपॉइंट बनाता है जिसे आप कमिट करते समय वापस कर सकते हैं। यही कारण है कि कई गिट गाइड जल्दी और अक्सर कमिट करने की सलाह देते हैं ।
फिलिप

4
@orlybg बहुत कम से कम, git stashइससे पहले कि आप कुछ कार्रवाई करें जिसे आप बाद में रिवर्स करना चाहें। फिर किसी भी तरह से, आप अपने स्टैश को वापस ला सकते हैं, और कुछ बाद के बिंदु पर प्रतिबद्ध कर सकते हैं।
नौसिखिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.