एंड्रॉइड कोड के साथ काम करने के लिए Git (एक ओपन-सोर्स संस्करण नियंत्रण प्रणाली) और Repo (एक Google-निर्मित रिपॉजिटरी प्रबंधन टूल जो Git के शीर्ष पर चलता है) का उपयोग करना आवश्यक है। रेपो और गिट के बीच संबंधों की व्याख्या और प्रत्येक टूल के लिए सहायक दस्तावेज़ के लिंक के लिए स्रोत नियंत्रण उपकरण देखें।
प्रवाह
Android विकास में निम्नलिखित बुनियादी वर्कफ़्लो शामिल है:
-
repo start
उपयोग करके एक नई विषय शाखा प्रारंभ करें। - फ़ाइलें संपादित करें.
-
git add
उपयोग करके स्टेज परिवर्तन। -
git commit
उपयोग करके परिवर्तन प्रतिबद्ध करें। -
repo upload
उपयोग करके समीक्षा सर्वर पर परिवर्तन अपलोड करें।
कार्य
एंड्रॉइड कोड रिपॉजिटरी में Git और Repo के साथ काम करने में निम्नलिखित सामान्य कार्य करना शामिल है।
आज्ञा | विवरण |
---|---|
repo init | एक नए ग्राहक को प्रारंभ करता है। |
repo sync | क्लाइंट को रिपॉजिटरी से सिंक करता है। |
repo start | एक नई शाखा प्रारंभ करता है. |
repo status | वर्तमान शाखा की स्थिति दर्शाता है. |
repo upload | समीक्षा सर्वर पर परिवर्तन अपलोड करता है। |
git add | फ़ाइलों को चरणबद्ध करता है. |
git commit | चरणबद्ध फ़ाइलें प्रतिबद्ध करता है। |
git branch | वर्तमान शाखाएँ दिखाता है. |
git branch [branch] | एक नई विषय शाखा बनाता है. |
git checkout [branch] | HEAD को निर्दिष्ट शाखा में स्विच करता है। |
git merge [branch] | [branch] वर्तमान शाखा में विलीन करता है। |
git diff | अस्थिर परिवर्तनों का अंतर दिखाता है। |
git diff --cached | चरणबद्ध परिवर्तनों का अंतर दिखाता है। |
git log | वर्तमान शाखा का इतिहास दिखाता है. |
git log m/[codeline].. | उन कमिट्स को दिखाता है जिन्हें पुश नहीं किया गया है। |
स्रोत डाउनलोड करने के लिए रेपो का उपयोग करने के बारे में जानकारी के लिए, स्रोत डाउनलोड करना और रेपो कमांड संदर्भ देखें।
ग्राहकों को सिंक्रोनाइज़ करना
सभी उपलब्ध परियोजनाओं के लिए फ़ाइलों को सिंक्रनाइज़ करने के लिए:
repo sync
चयनित परियोजनाओं के लिए फ़ाइलों को सिंक्रनाइज़ करने के लिए:
repo sync PROJECT0 PROJECT1 ... PROJECTN
विषय शाखाएँ बनाना
जब भी आप कोई बदलाव शुरू करें, जैसे कि जब आप किसी बग या नई सुविधा पर काम शुरू करते हैं, तो अपने स्थानीय कार्य परिवेश में एक विषय शाखा शुरू करें। विषय शाखा मूल फ़ाइलों की प्रतिलिपि नहीं है ; यह एक विशेष प्रतिबद्धता के लिए एक संकेतक है, जो स्थानीय शाखाएं बनाना और उनके बीच स्विच करना एक हल्का ऑपरेशन बनाता है। शाखाओं का उपयोग करके, आप अपने काम के एक पहलू को दूसरे से अलग कर सकते हैं। विषय शाखाओं का उपयोग करने के बारे में एक दिलचस्प लेख के लिए, विषय शाखाओं को अलग करना देखें।
रेपो का उपयोग करके विषय शाखा शुरू करने के लिए, प्रोजेक्ट पर जाएँ और चलाएँ:
repo start BRANCH_NAME .
पिछली अवधि ( .
) वर्तमान कार्यशील निर्देशिका में प्रोजेक्ट का प्रतिनिधित्व करती है।
यह सत्यापित करने के लिए कि नई शाखा बनाई गई है:
repo status .
विषय शाखाओं का उपयोग करना
किसी विशिष्ट परियोजना को शाखा सौंपने के लिए:
repo start BRANCH_NAME PROJECT_NAME
सभी परियोजनाओं की सूची के लिए, android.googlesource.com देखें। यदि आप पहले ही प्रोजेक्ट निर्देशिका में नेविगेट कर चुके हैं, तो वर्तमान प्रोजेक्ट को दर्शाने के लिए बस एक अवधि का उपयोग करें।
अपने स्थानीय कार्य परिवेश में किसी अन्य शाखा में स्विच करने के लिए:
git checkout BRANCH_NAME
मौजूदा शाखाओं की सूची देखने के लिए:
git branch
या
repo branches
दोनों आदेश मौजूदा शाखाओं की सूची को तारांकन (*) से पहले वर्तमान शाखा के नाम के साथ लौटाते हैं।
स्टेजिंग फ़ाइलें
डिफ़ॉल्ट रूप से, Git किसी प्रोजेक्ट में आपके द्वारा किए गए परिवर्तनों को नोटिस करता है लेकिन ट्रैक नहीं करता है। Git को अपने परिवर्तनों को संरक्षित करने के लिए कहने के लिए, आपको उन परिवर्तनों को एक प्रतिबद्धता में शामिल करने के लिए चिह्नित या चरणबद्ध करना होगा।
परिवर्तन चरणबद्ध करने के लिए:
git add
यह कमांड प्रोजेक्ट निर्देशिका के भीतर फ़ाइलों या निर्देशिकाओं के लिए तर्क स्वीकार करता है। नाम के बावजूद, git add
केवल Git रिपॉजिटरी में फ़ाइलें नहीं जोड़ता है; इसका उपयोग फ़ाइल संशोधनों और विलोपन को चरणबद्ध करने के लिए भी किया जा सकता है।
ग्राहक की स्थिति देखना
फ़ाइलों की स्थिति सूचीबद्ध करने के लिए:
repo status
अप्रतिबद्ध संपादन देखने के लिए (स्थानीय संपादन जो प्रतिबद्ध के लिए चिह्नित नहीं हैं):
repo diff
प्रतिबद्ध संपादन देखने के लिए (स्थानीय संपादन जो प्रतिबद्ध के लिए चिह्नित हैं ), सुनिश्चित करें कि आप प्रोजेक्ट निर्देशिका में हैं, फिर cached
तर्क के साथ git diff
चलाएँ:
cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached
परिवर्तन के लिए प्रतिबद्ध होना
एक कमिट Git में संशोधन नियंत्रण की मूल इकाई है और इसमें संपूर्ण प्रोजेक्ट के लिए निर्देशिका संरचना और फ़ाइल सामग्री का एक स्नैपशॉट शामिल होता है। Git में कमिट बनाने के लिए इस कमांड का उपयोग करें:
git commit
प्रतिबद्ध संदेश के लिए पूछे जाने पर, AOSP को सबमिट किए गए परिवर्तनों के लिए एक संक्षिप्त (लेकिन उपयोगी) संदेश प्रदान करें। यदि आप कमिट संदेश नहीं जोड़ते हैं, तो कमिट विफल हो जाता है।
गेरिट में परिवर्तन अपलोड हो रहे हैं
नवीनतम संशोधन पर अद्यतन करें, फिर परिवर्तन अपलोड करें:
repo sync
repo upload
ये आदेश आपके द्वारा किए गए परिवर्तनों की एक सूची लौटाते हैं और आपको समीक्षा सर्वर पर अपलोड करने के लिए शाखाओं का चयन करने के लिए प्रेरित करते हैं। यदि केवल एक शाखा है, तो आपको एक साधारण y/n
संकेत दिखाई देगा।
समन्वयन विवादों का समाधान करना
यदि repo sync
कमांड सिंक विरोध लौटाता है:
- वे फ़ाइलें देखें जो मर्ज नहीं की गई हैं (स्थिति कोड = यू)।
- आवश्यकतानुसार संघर्ष क्षेत्रों को संपादित करें।
- प्रासंगिक प्रोजेक्ट निर्देशिका में बदलें. प्रभावित फ़ाइलें जोड़ें और प्रतिबद्ध करें, फिर परिवर्तनों को पुनः आधार बनाएं:
git add .
git commit
git rebase --continue
- रिबेस पूरा होने के बाद, संपूर्ण सिंक फिर से शुरू करें:
repo sync PROJECT0 PROJECT1 ... PROJECTN
ग्राहकों की सफाई
गेरिट में परिवर्तनों को मर्ज करने के बाद, अपनी स्थानीय कार्यशील निर्देशिका को अपडेट करें, फिर पुरानी विषय शाखाओं को सुरक्षित रूप से हटाने के लिए repo prune
उपयोग करें:
repo sync
repo prune
ग्राहकों को हटाया जा रहा है
क्योंकि सभी स्थिति की जानकारी आपके क्लाइंट में संग्रहीत है, आपको केवल अपने फ़ाइल सिस्टम से निर्देशिका को हटाने की आवश्यकता है:
rm -rf WORKING_DIRECTORY
किसी क्लाइंट को हटाने से आपके द्वारा समीक्षा के लिए अपलोड नहीं किए गए सभी परिवर्तन स्थायी रूप से हट जाते हैं ।