शुरुआती डेवलपर्स के रूप में, हम दोहराव के माध्यम से Git सीखते हैं। हम जल्दी सीखते हैं कि git pull, git push, और git commit का प्रत्येक का क्या अर्थ है। जैसे-जैसे हम बड़े प्रोजेक्ट्स पर काम करने और टीमों के साथ सहयोग करने के लिए संक्रमण करते हैं, हम अधिक उन्नत Git कमांड्स सीखना शुरू करते हैं जो एक प्रोजेक्ट पर काम करने वाले व्यक्तियों के बीच हमारी कोडबेस के वर्जन कंट्रोल इतिहास को सीधा रखने में मदद करेंगे।
ऐसा ही एक कमांड है git cherry-pick। git cherry-pick कमांड का उपयोग तब किया जाता है जब हम एक ब्रांच से विशिष्ट कमिट्स लेना चाहते हैं और उन्हें किसी अन्य फीचर ब्रांच या मास्टर ब्रांच के HEAD से जोड़ना चाहते हैं।
git cherry-pick क्या है?
चेरी-पिकिंग को एक ग्रुप प्रोजेक्ट पर काम करने के रूप में सोचें। प्रत्येक व्यक्ति का एक विशिष्ट खंड होता है जिस पर उसे काम करने की आवश्यकता होती है। अंत में, वे प्रत्येक खंड को एक कुल प्रोजेक्ट में जोड़ देंगे। आप किसी खंड के कुछ हिस्सों को ले सकते हैं और इसे दूसरे खंड में एक भाग में जोड़ सकते हैं ताकि प्रोजेक्ट बेहतर ढंग से प्रवाहित हो।
यही मूल रूप से git cherry-pick है: हम एक फीचर ब्रांच से एक कमिट या कई कमिट्स लेते हैं और इसे दूसरे ब्रांच पर एक नए कमिट के रूप में जोड़ते हैं। आइए देखते हैं कि यह कैसे काम करता है:
यह बेसिक डायग्राम एक प्रोजेक्ट से दो ब्रांचेज़ को दर्शाता है जिसे Git द्वारा ट्रैक किया जाता है। अक्षर उनके संबंधित ब्रांचेज़ पर Git रिपॉजिटरी में किए गए विभिन्न कमिट्स को दर्शाते हैं। डैशेस इतिहास को दर्शाते हैं, सबसे पुराने से सबसे नए तक। चरणों का पालन करते समय दो ब्रांचेज़ की संरचना और वे कैसे काम करते हैं, इसकी कल्पना करने का प्रयास करें:
git cherry-pick पूरा करने के चरण
ऊपर दिखाए गए अनुसार प्रत्येक Git कमिट या अक्षर को एक चेरी के रूप में सोचें। प्रत्येक चेरी के साथ एक यूनिक हैश जुड़ा होता है – यदि आप निश्चित नहीं हैं कि हैश क्या है, तो इसे एक फिंगरप्रिंट या यूनिक आइडेंटिफायर के रूप में सोचें जो कमिट से जुड़ा होता है। उस चेरी को चुनने और दूसरी ब्रांच में जोड़ने के लिए हमें उस हैश की आवश्यकता होगी।
git checkout <कमिट लेने वाली ब्रांच का नाम>
उस ब्रांच पर चेकआउट करें जिससे आप अपना कमिट/चेरी चुनना चाहते हैं।git reflog
Git रेफरेंस लॉग,reflog, हाल की क्रियाओं को ट्रैक करता है। यहाँ git reflog का एक उदाहरण है:
% git reflog
bf654bb (HEAD -> master, origin/master) HEAD@{0}: commit: last commit message made
2394353 HEAD@{1}: commit: where head was 2 commit messages ago
b4b51eb HEAD@{2}: commit: where head was 3 commit messages ago
यदि आप बड़ी टीम के साथ काम कर रहे हैं तो आपका कमिट रेफरेंस लॉग अधिक जानकारी रख सकता है, जैसे तारीख, समय, और/या लेखक जिसने कमिट किया। यहाँ, हालांकि, हम कमिट हैश, वह ब्रांच जहां कमिट किया गया था, की गई क्रिया, और वास्तविक कमिट संदेश देखते हैं।
एक बार जब आप जान जाते हैं कि आप किस कमिट को दूसरी ब्रांच में जोड़ना चाहते हैं, तो हैश का नोट बना लें – हैश इस उदाहरण में प्रत्येक पंक्ति की शुरुआत में संख्याओं और वर्णों की स्ट्रिंग है।git checkout <कमिट जोड़ने वाली ब्रांच का नाम>
हैश का नोट बनाने के बाद, उस ब्रांच पर स्विच करें जिसमें आप कमिट जोड़ना चाहते हैं।git cherry-pick [-x] <commit hash>
कमिट हैश के साथgit cherry-pickकमांड का उपयोग करके उस ब्रांच के वर्किंग ट्री में कमिट जोड़ें। जब आप किसी पब्लिक ब्रांच से चेरी-पिक कर रहे हों तो-xफ्लैग का उपयोग करें क्योंकि यह एक लाइन जोड़ देगा जो मूल कमिट को टिप्पणी करता है जिससे इसे चेरी-पिक किया गया था।
आइए चेरी-पिक के बाद हमारे डायग्राम पर एक और नज़र डालें:
आइए चेरी-पिक के बाद हमारे डायग्राम पर एक और नज़र डालें:
इस उदाहरण में हमने जो "चेरी", या कमिट हैश, चुना है वह "C" है। ऊपर उल्लिखित चरणों का पालन करने के बाद, चयनित कमिट, इस उदाहरण में "C", दूसरी ब्रांच के इतिहास में एक कमिट के रूप में जोड़ा जाता है।
अंतिम नोट्स
अंतिम काम चेरी-पिक किए गए कमिट से किसी भी नोट को कॉपी करना है। मूल कमिट में किए गए किसी भी नोट को कॉपी करने के लिए git notes copy <cherry-picked commit hash> <new-commit-hash> का उपयोग करें।
साथ ही, परिणामस्वरूप उत्पन्न होने वाले किसी भी मर्ज कन्फ्लिक्ट को हल करना सुनिश्चित करें।
इस लेख में, हमने एक उन्नत Git कमांड git cherry-pick का उपयोग करने की प्रक्रिया पर एक नज़र डाली। इसका उपयोग तब करें जब आपको एक ब्रांच से कमिट लेने और इसे दूसरी ब्रांच में जोड़ने की आवश्यकता हो।