यदि आप यह सुनिश्चित करना चाहते हैं कि एक विशिष्ट प्रतिबद्ध के शीर्ष पर (एकल कमिट) पैच लागू किया जाएगा, तो आप नए git 2.9 (जून 2016) विकल्प का उपयोग कर सकते हैं git format-patch --base
git format-patch --base=COMMIT_VALUE~ -M -C COMMIT_VALUE~..COMMIT_VALUE
# or
git format-patch --base=auto -M -C COMMIT_VALUE~..COMMIT_VALUE
# or
git config format.useAutoBase true
git format-patch -M -C COMMIT_VALUE~..COMMIT_VALUE
देखें bb52995 प्रतिबद्ध , प्रतिबद्ध 3de6651 , प्रतिबद्ध fa2ab86 , प्रतिबद्ध ded2c09 (26 अप्रैल 2016) से Xiaolong ये ( ``) ।
( जूनियो सी gitsterहमानो द्वारा विलय - - में 72ce3ff , 23 मई 2016)
format-patch: --baseआधार ट्री जानकारी को रिकॉर्ड करने के लिए ' ' विकल्प जोड़ें
अनुरक्षक या तीसरे पक्ष के परीक्षक पैच श्रृंखला पर लागू सटीक आधार वृक्ष जानना चाह सकते हैं। --baseबेस ट्री जानकारी रिकॉर्ड करने के लिए git फॉर्मेट-पैच 'a' विकल्प सिखाएं और इसे पहले संदेश के अंत में जोड़ दें (या तो कवर पत्र या श्रृंखला में पहला पैच)।
बेस ट्री की जानकारी में "बेस कमिट" होता है, जो कि एक जानी-मानी कमिटमेंट है, जो प्रोजेक्ट हिस्ट्री के स्थिर भाग का हिस्सा है, जो बाकी सब काम करता है, और शून्य या अधिक "पूर्वापेक्षित पैच", जो अच्छी तरह से जाना जाता है फ्लाइट में पैच जो "बेस कमिट" का हिस्सा नहीं है जिन्हें पैच लगाने से पहले टोपोलॉजिकल ऑर्डर में "बेस कमेट" के ऊपर लगाने की जरूरत है।
"बेस कमिट" को " base-commit:" ऑब्जेक्ट ऑब्जेक्ट नाम के 40-हेक्स के बाद दिखाया गया है ।
एक "पूर्वापेक्षा पैच" को " prerequisite-patch-id:" 40-हेक्स "पैच आईडी" के बाद दिखाया गया है , जिसे " git patch-id --stable" कमांड के माध्यम से पैच पास करके प्राप्त किया जा सकता है ।
Git 2.23 (Q3 2019) में सुधार होगा, क्योंकि " --base" का विकल्प " format-patch" patch-idsएक अस्थिर तरीके से पूर्वापेक्षा पैच के लिए गणना करता है , जिसे इस तरह से गणना करने के लिए अद्यतन किया गया है जो " git patch-id --stable" के साथ संगत है ।
देखें स्टीफन बॉयड ( ) द्वारा a8f6855 , 6f93d26 (26 अप्रैल 2019) के लिए प्रतिबद्ध ।akshayka
(द्वारा विलय Junio सी Hamano - gitster- में प्रतिबद्ध 8202d12 , 13 जून 2019)
format-patch: --base patch-idआउटपुट को स्थिर बनाते हैं
जब भी हम patch-idपीढ़ी कोड में एक हंक को संसाधित करते हैं, तो हम संदर्भ को नहीं रोक रहे थे
diff.c, लेकिन हम ऐसा कर रहे थे जब हमने ' patch-id' ' ' टूल ' ' के साथ "स्थिर" पैच-आइडी जनरेट किया था ।
चलिए उस समान तर्क को हम से अलग patch-id.cकरते हैं diff.cताकि हम उसी प्रकार का हैश प्राप्त कर सकें जब हम ' format-patch --base=' प्रकार के कमांड इनवोकेशन के लिए पैच-आईडी बना रहे हैं ।
Git 2.24 (Q4 2019) से पहले, " git format-patch -o <outdir>" ने " mkdir <outdir>" नहीं " mkdir -p <outdir>" के बराबर किया , जिसे सुधारा जा रहा है।
बर्ट वेसरग ( ) द्वारा देखें edefc31 (11 अक्टूबर 2019 ) । (द्वारा विलय Junio सी Hamano - - में प्रतिबद्ध f1afbb0 , 18 अक्टू 2019)bertwesarg
gitster
format-patch: आउटपुट डायरेक्टरी के प्रमुख घटक बनाएं
साइन-ऑफ-बाय: बर्ट वेसरग
'git format-पैच -o' ने 'mkdir' के बराबर 'mkdir -p' नहीं किया, जिसे सही किया जा रहा है।
adjust_shared_permअग्रणी निर्देशिकाओं पर ' ' के उपयोग से बचें, जिनमें सुरक्षा निहितार्थ हो सकते हैं। अस्थायी रूप से ' config.sharedRepository' जैसे ' git init' को अक्षम करने से प्राप्त होता है।
2.25 Git (Q1 2020) के साथ, " git rebase" जब अच्छी तरह से काम नहीं कियाformat.useAutoBase कॉन्फ़िगरेशन चर सेट , जिसे ठीक कर दिया गया है।
देखें cae0bc0 प्रतिबद्ध , 945dc55 प्रतिबद्ध , 700e006 प्रतिबद्ध , a749d01 प्रतिबद्ध , प्रतिबद्ध 0c47e06 द्वारा (04 दिसंबर 2019) डेंटन लियू ( Denton-L) ।
(द्वारा विलय Junio सी Hamano - gitster- में प्रतिबद्ध 71a7de7 , 16 दिसंबर 2019)
rebase: format.useAutoBaseब्रेक्जिट ठीक करें
रिपोर्टेड-बाय: क्रिश्चियन बायसिंगर
साइन-ऑफ-बाय: डेंटन लियू
format.useAutoBase = trueरनिंग रिबेस के साथ , एक त्रुटि हुई:
fatal: failed to get upstream, if you want to record base commit automatically,
please use git branch --set-upstream-to to track a remote branch.
Or you could specify base commit by --base=<base-commit-id> manually
error:
git encountered an error while preparing the patches to replay
these revisions:
ede2467cdedc63784887b587a61c36b7850ebfac..d8f581194799ae29bf5fa72a98cbae98a1198b12
As a result, git cannot rebase them.
इसे हमेशा रिबेट --no-baseसे फॉर्मेट-पैच में पास करके ठीक करें ताकि इसका प्रभाव format.useAutoBaseनकारात्मक हो।
git apply --stat file.patch# शो आँकड़े।git apply --check file.patch# आवेदन करने से पहले त्रुटि की जांच करें।git am < file.patch# अंत में पैच अप्लाई करें।