मेरे ग्राहक git diff
बिना स्थापित किए हुए पैच कैसे बना सकते हैं ? मैंने patch
कमांड का उपयोग करने की कोशिश की है लेकिन यह हमेशा फ़ाइल नाम को पैच करने के लिए कहता है।
patch
पूरी तरह से इस प्रारूप का समर्थन नहीं करता है।
मेरे ग्राहक git diff
बिना स्थापित किए हुए पैच कैसे बना सकते हैं ? मैंने patch
कमांड का उपयोग करने की कोशिश की है लेकिन यह हमेशा फ़ाइल नाम को पैच करने के लिए कहता है।
patch
पूरी तरह से इस प्रारूप का समर्थन नहीं करता है।
जवाबों:
git diff > patchfile
तथा
patch -p1 < patchfile
काम लेकिन जितने लोगों ने टिप्पणियों और अन्य उत्तरों पर ध्यान दिया, पैच समझ में नहीं आता, हटाता है और नाम बदल देता है। कोई विकल्प नहीं है, लेकिन git apply patchfile
अगर आपको हैंडल फ़ाइल को जोड़ने, हटाने और नाम बदलने की आवश्यकता है।
EDIT दिसंबर 2015
patch
कमांड के नवीनतम संस्करण (2.7, सितंबर 2012 में जारी किए गए) "नाम-स्वरूप" प्रारूप की अधिकांश विशेषताओं का समर्थन करते हैं, जिसमें नाम और प्रतियाँ, अनुमति परिवर्तन और सिम्लिंक भिन्न होते हैं (लेकिन अभी तक बाइनरी भिन्न नहीं होते हैं) ( रिलीज़ की घोषणा )।
इसलिए बशर्ते वर्तमान / नवीनतम संस्करण का patch
उपयोग git
किया जाए, ताकि पैच के रूप में इसका उपयोग लागू करने में सक्षम होने की आवश्यकता न हो।
git diff > patchfile
, लेकिनpatch -p1 < patchfile
relative
विकल्प का उपयोग कर सकते हैं जैसे:git diff --no-prefix --relative=my/relative/path > patchfile
patch -p1 < patchfile
git स्थापित करने की आवश्यकता नहीं है। पहला कमांड डिफॉल्ट जेनरेट करने के लिए कमांड को प्रदर्शित करता है, इसे लागू नहीं करने के लिए।
git diff from_branch > patchfile; git checkout from_branch; git patch -p1 < patchfile
याgit diff from_branch to_branch > patchfile; ...
उपयोग
git apply patchfile
अगर संभव हो तो।
patch -p1 < patchfile
संभावित दुष्परिणाम है।
git apply
यदि वे git diff
प्रारूप में वर्णित हैं, तो फ़ाइल को जोड़ता है, हटाता है और नाम बदल देता है , जो patch
ऐसा नहीं करेगा। अंत में, git apply
एक "सभी को लागू करें या सभी को निरस्त करें" मॉडल है जहां या तो सब कुछ लागू है या कुछ भी नहीं है, जबकि पैच आंशिक रूप से पैच फ़ाइलों को लागू कर सकता है, जिससे आपकी कार्यशील निर्देशिका एक अजीब स्थिति में रह सकती है।
git apply
इसे करने का सबसे अच्छा तरीका है, लेकिन यह सवाल विशेष रूप से पूछता है कि बिना गिट के पैच को कैसे लगाया जाए ।
--dry-run --verbose
यह निर्धारित करने के लिए उपयोगी हैं कि दुष्प्रभाव क्या होगा, यदि कोई हो। (पैच v2.5.8 का उपयोग करते हुए)
git apply patchfile -
... एकमात्र समझदार उत्तर ..." - यह लगभग प्रशंसनीय है। जब भी ओपनएसएसएल के देवता मुझे परीक्षण के लिए एक पैच भेजते हैं, तो गिट इसे लागू करने में विफल रहता है। वह हर बार है। मैंने अभी तक देखा है कि बेवकूफ उपकरण एक पैच लागू करते हैं।
मैं उपयोग करता हूं
patch -p1 --merge < patchfile
इस तरह, संघर्ष हमेशा की तरह हल हो सकते हैं।