सामग्री पर जाएं
GitTree
गिट गाइड5 मिनट पढ़ा

Git में पैच कैसे बनाएं और लागू करें

एक पैच एक सादे पाठ फ़ाइल के रूप में रिपॉजिटरी के बीच परिवर्तन करता है। यहां बताया गया है कि कब git diff या git format-patch का उपयोग करना है, कब git apply या git am का उपयोग करना है, और उस पैच को कैसे ठीक करना है जो लगाने से इनकार करता है।

द्वारा लिखित Kodmora

GitTree के पीछे सॉफ्टवेयर हाउस

अद्यतन किया गया
  • कमिट
  • रिमोट और पुश
इस पेज पर

एक पैच बनाने के लिए, बिना कमिट के परिवर्तनों के लिए `git diff > fix.patch` चलाएँ, या अपनी अंतिम कमिट के लिए `git format-patch -1 HEAD` चलाएँ। इसे लागू करने के लिए, `git apply fix.patch` या `git am 0001-my-change.patch` चलाएँ। जब आप केवल अपने कार्यशील फ़ोल्डर में परिवर्तन चाहते हैं तो git apply का उपयोग करें। जब आप मूल कमिट, उसके संदेश और लेखक के साथ चाहते हैं तो git am का उपयोग करें।

गिट पैच क्या है?

पैच एक टेक्स्ट फ़ाइल है जो सूचीबद्ध करती है कि किन पंक्तियों को हटाना है और किन फ़ाइलों में जोड़ना है। यह ऐसे समय के लिए उपयुक्त है जब आप एक ही रिमोट पर पुश नहीं कर सकते: ई-मेल द्वारा फिक्स भेजना, असंबद्ध रिपॉजिटरी के बीच परिवर्तन करना, या संस्करण नियंत्रण के बाहर स्थानीय परिवर्तन रखना। जब आप और दूसरा व्यक्ति रिमोट साझा करते हैं, तो शाखा सरल हो जाती है।

मैं बिना कमिट के परिवर्तनों से पैच कैसे बनाऊं?

# unstaged changes
git diff > fix.patch

# staged changes
git diff --staged > fix.patch

# everything since the last commit
git diff HEAD > fix.patch

# include binary files
git diff --binary > fix.patch

नई फ़ाइलें जो चरणबद्ध नहीं हैं, git diff में दिखाई नहीं देती हैं। पहले उन पर git add चलाएँ और --staged का उपयोग करें।

मैं कमिट से पैच कैसे बनाऊं?

# the last commit
git format-patch -1 HEAD

# the last three commits, one file each
git format-patch -3

# everything on this branch that main does not have
git format-patch main..feature/search -o patches/

# all of it in a single file
git format-patch main --stdout > feature.patch

format-patch writes files named like 0001-add-search-box.patch. Each keeps the commit’s message, author and date, which a plain git diff loses.

मैं पैच कैसे लगाऊं?

पहले इसे जांचें. ये दो आदेश कुछ भी नहीं बदलते:

# what it touches
git apply --stat fix.patch

# whether it will apply
git apply --check fix.patch

फिर इसे अपनी आवश्यकतानुसार लागू करें:

# into the working folder, nothing staged
git apply fix.patch

# into the working folder and the staging area
git apply --index fix.patch

# as commits, with their messages and authors
git am patches/*.patch

git अप्लाई और git am में क्या अंतर है?

git am की तुलना में git लागू करें
git applygit am
पढ़ता हैकोई अंतरgit format-patch, या मेलबॉक्स से फ़ाइलें
नतीजाफ़ाइलें बदली गईं, कोई कमिट नहींप्रति पैच एक कमिट
संदेश और लेखक रखता हैनहींहाँ
असफलता परडिफ़ॉल्ट रूप से कुछ भी लागू नहीं होतारुकता है; जारी रखें या git am --abort

मैं "पैच लागू नहीं होता" को कैसे ठीक करूं?

error: patch failed: src/search.ts:14
error: src/search.ts: patch does not apply

पैच बनने के बाद से फ़ाइल बदल गई है, इसलिए इसकी संदर्भ पंक्तियाँ अब मेल नहीं खातीं। इन्हें क्रम से आज़माएँ:

  1. git apply --3way fix.patch मर्ज करने के लिए मूल ब्लॉब्स का उपयोग करता है, और सामान्य विरोध मार्कर छोड़ देता है। इसे आपके भंडार में उन बूँदों की आवश्यकता है।
  2. git apply --whitespace=fix fix.patch तब मदद करता है जब केवल रिक्त स्थान या पंक्ति के अंत भिन्न होते हैं।
  3. git apply --reject fix.patch जो कुछ भी कर सकता है उसे लागू करता है और विफल भागों को आपके हाथ से करने के लिए .rej फाइलों में लिखता है।
  4. उस कमिट की जांच करें जहां से पैच बनाया गया था, इसे वहां लागू करें, फिर दोबारा आधार बनाएं।

git am के लिए, git am --3way का उपयोग करें, विवाद का समाधान करें, फ़ाइल git add और चलाएँ git am --continue। पीछे हटने के लिए, git am --abort चलाएँ, जैसा कि मर्ज या रीबेस कैसे रद्द करें में सूचीबद्ध है।

मैं किसी पैच को कैसे पूर्ववत करूँ?

git apply -R fix.patch

-R पैच को उल्टा लगाता है। यदि आपने git am का उपयोग किया है, तो कमिट सामान्य कमिट हैं, इसलिए उन्हें `git reset` या `git revert` से पूर्ववत करें।

GitTree में पैच कैसे बनाएं और लागू करें

  1. एक पैच सहेजें

    किसी कमिट पर राइट-क्लिक करें और कॉपी खोलें, फिर कमिट से पैच बनाएं...। कमिट से पैच बनाएं... के लिए कई कमिट चुनें, या फ़ाइल परिवर्तनों से पैच बनाएं... के लिए बदली हुई फ़ाइल पर राइट-क्लिक करें।

  2. एक पैच लगाएं

    कमांड पैलेट से पैच लागू करें... चलाएँ और फ़ाइल चुनें। GitTree बताता है कि इसमें कितनी फ़ाइलें और कमिट हैं, और क्या इसमें बाइनरी परिवर्तन शामिल हैं।

  3. इसे लागू करने का तरीका चुनें

    इस पर लागू करें के अंतर्गत, केवल कार्यशील वृक्ष (git apply), कार्यशील वृक्ष और परिवर्तनों को चरणबद्ध करें (git apply --index) या वर्तमान शाखा पर कमिट के रूप में (git am) चुनें, फिर लागू करें दबाएँ।

GitTree में किसी कमिट के कॉपी सबमेनू में कमिट से पैच बनाएं...
GitTree में किसी कमिट के कॉपी सबमेनू में कमिट से पैच बनाएं...GitTree प्रदर्शन भंडार के साथ इंटरफ़ेस।

पैच बनाने और लागू करने की मार्गदर्शिका प्रत्येक विकल्प को सूचीबद्ध करती है।

अक्सर पूछे जाने वाले प्रश्न

गिट डिफ और गिट फॉर्मेट-पैच के बीच क्या अंतर है?

git diff केवल परिवर्तन लिखता है। git format-patch संदेश, लेखक और तारीख के साथ प्रति कमिट एक फ़ाइल लिखता है, इसलिए git am कमिट को फिर से बना सकता है।

क्या गिट अप्लाई एक कमिट बनाता है?

नहीं, यह केवल फ़ाइलें बदलता है। उनकी समीक्षा करें, फिर हमेशा की तरह कमिट हों। कमिट प्राप्त करने के लिए git am का उपयोग करें।

मैं GitHub से पैच कैसे लगाऊं?

किसी कमिट के अंत में .patch जोड़ें या GitHub पर अनुरोध URL पुल करें, फ़ाइल डाउनलोड करें और उस पर git am चलाएँ।

क्या किसी पैच में बाइनरी फ़ाइलें शामिल हो सकती हैं?

हाँ, यदि आप इसे git diff --binary के साथ बनाते हैं। git format-patch में डिफ़ॉल्ट रूप से बाइनरी परिवर्तन शामिल हैं।

क्या चेरी-पिक पैच से बेहतर है?

जब दोनों कमिट एक रिपॉजिटरी या एक प्राप्त रिमोट में होते हैं, तो हाँ: `git cherry-pick` छोटा होता है और स्रोत कमिट को ट्रैक करता है। पैच तब के लिए होते हैं जब रिपॉजिटरी एक-दूसरे तक नहीं पहुंच पाती हैं।

सूत्र

अन्य उत्पादों के बारे में दावों की जाँच उनके आधिकारिक पेजों के विरुद्ध 7 नवंबर 2026 पर की गई। कीमतें और सुविधाएँ बदलती हैं; विक्रेताओं के पृष्ठ सत्य का स्रोत हैं।