खोज…
टिप्पणियों
यह ध्यान देने योग्य है कि मंचन का 'फाइलों' के साथ बहुत कुछ करना है और प्रत्येक दिए गए फ़ाइल के परिवर्तनों के साथ सब कुछ करना है। हम उन फ़ाइलों को चरणबद्ध करते हैं, जिनमें परिवर्तन होते हैं, और git परिवर्तनों को कमिट के रूप में ट्रैक करता है (भले ही किसी कमिट में बदलाव कई फ़ाइलों में किए गए हों)।
फाइलों और कमिट के बीच का अंतर मामूली लग सकता है, लेकिन इस अंतर को समझना चेरी-पिक और डिफरेंशियल जैसे आवश्यक कार्यों को समझने के लिए मौलिक है। ( एक स्वीकार किए गए उत्तर की जटिलता के बारे में टिप्पणियों में हताशा देखें जो एक फ़ाइल प्रबंधन आदि के रूप में चेरी-पिक का प्रस्ताव करता है )।
अवधारणाओं को समझाने के लिए एक अच्छी जगह क्या है? क्या यह टिप्पणी में है?
प्रमुख धारणाएँ:
एक फाइल सूचना प्रौद्योगिकी में दोनों का अधिक सामान्य रूपक है। सबसे अच्छा अभ्यास यह निर्धारित करता है कि एक फ़ाइल नाम नहीं बदलता है क्योंकि इसकी सामग्री बदल जाती है (कुछ मान्यता प्राप्त अपवादों के साथ)।
एक प्रतिबद्ध एक रूपक है जो स्रोत कोड प्रबंधन के लिए अद्वितीय है। बग फिक्स की तरह एक विशिष्ट प्रयास से संबंधित परिवर्तन हैं। कमिट में अक्सर कई फाइलें होती हैं। एक सिंगल, माइनर बग फिक्स में टेम्प्लेट्स और विशिष्ट फाइल में सीएसएस शामिल हो सकते हैं। जैसा कि परिवर्तन का वर्णन किया गया है, विकसित, प्रलेखित, समीक्षा की गई और तैनात की गई है, अलग-अलग फ़ाइलों में परिवर्तन को एकल इकाई के रूप में एनोटेट और नियंत्रित किया जा सकता है। इस मामले में एकल इकाई प्रतिबद्ध है। समान रूप से महत्वपूर्ण, एक समीक्षा के दौरान केवल कमिट पर ध्यान केंद्रित करने से विभिन्न प्रभावित फाइलों में कोड की अपरिवर्तित लाइनों को सुरक्षित रूप से अनदेखा करने की अनुमति मिलती है।
एक एकल फ़ाइल मचान
किसी फ़ाइल को कमिट करने के लिए, चलाने के लिए
git add <filename>
फ़ाइलों में सभी परिवर्तन करना
git add -A
git add .
संस्करण में 2.x, git add .
वर्तमान निर्देशिका और इसके सभी उपनिर्देशिकाओं में फ़ाइलों के सभी परिवर्तनों को चरणबद्ध करेगा। हालाँकि, 1.x में यह केवल नई और संशोधित फ़ाइलों को स्टेज करेगा , डिलीट की गई फ़ाइलों को नहीं ।
git add -A
, या इसके समतुल्य कमांड git add --all
all का उपयोग करें, git add -A
किसी भी संस्करण में फ़ाइलों में सभी परिवर्तनों को चरणबद्ध करने के लिए।
चरण हटाई गई फ़ाइलें
git rm filename
फ़ाइल को डिस्क से हटाए बिना गिट से हटाने के लिए, - --cached
ध्वज का उपयोग करें
git rm --cached filename
ऐसी फ़ाइल को अनस्टेज करें जिसमें परिवर्तन हों
git reset <filePath>
इंटरएक्टिव ऐड
git add -i
(or --interactive
) आपको एक इंटरेक्टिव इंटरफ़ेस देगा जहां आप इंडेक्स को संपादित कर सकते हैं, यह तैयार करने के लिए कि आप अगले कमिट में क्या चाहते हैं। आप संपूर्ण फ़ाइलों में परिवर्तन जोड़ सकते हैं और हटा सकते हैं, अनट्रैक की गई फ़ाइलों को जोड़ सकते हैं और फ़ाइलों को ट्रैक करने से हटा सकते हैं, लेकिन अनुक्रमणिका में परिवर्तन करने के लिए बदलावों का चयन भी कर सकते हैं, उन जोड़-तोड़ को विभाजित करते हुए, या अंतर को संपादित करते हुए बदलाव भी चुन सकते हैं। । Git के लिए कई चित्रमय प्रतिबद्ध उपकरण (जैसे git gui
) में ऐसी सुविधा शामिल है; यह कमांड लाइन संस्करण की तुलना में उपयोग करना आसान हो सकता है।
यह बहुत उपयोगी है (1) यदि आपने वर्किंग डायरेक्टरी में बदलावों को उलझा दिया है, जिसे आप अलग-अलग कमिट में रखना चाहते हैं, और सभी को एक सिंगल कमिट (2) में नहीं करना चाहते हैं, अगर आप इंटरएक्टिव रिबास के बीच में हैं और विभाजित करना चाहते हैं बड़ी प्रतिबद्धता।
$ git add -i
staged unstaged path
1: unchanged +4/-4 index.js
2: +1/-0 nothing package.json
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now>
इस आउटपुट के शीर्ष आधे भाग में तर्जनी और अस्थिर स्तंभों में सूचकांक की वर्तमान स्थिति को दिखाया गया है:
-
index.js
में 4 लाइनें जोड़ी गईं और 4 लाइनें हटा दी गईं। वर्तमान स्थिति की रिपोर्ट "अपरिवर्तित" होने के कारण इसका मंचन नहीं किया गया है। जब इस फ़ाइल का मंचन हो जाता है, तो+4/-4
बिट को चरणबद्ध कॉलम में स्थानांतरित कर दिया जाएगा और बिना पढ़ा हुआ कॉलम कुछ भी नहीं पढ़ेगा। " -
package.json
में एक लाइन जोड़ी गई है और उसका मंचन किया गया है। इसके बाद कोई और बदलाव नहीं हुआ है क्योंकि इसे बिना किसी कॉलम के तहत "कुछ भी नहीं" लाइन द्वारा इंगित किया गया है।
नीचे का आधा हिस्सा दिखाता है कि आप क्या कर सकते हैं। या तो एक संख्या (1-8) या एक अक्षर ( s
, u
, r
, a
, p
, d
, q
, h
) दर्ज करें।
status
आउटपुट को आउटपुट के शीर्ष भाग के समान दिखाती है।
update
आपको अतिरिक्त सिंटैक्स के साथ चरणबद्ध कमिट में और बदलाव करने की अनुमति देता है।
revert
गए चरणबद्ध सूचना को HEAD में revert
देंगे।
add untracked
आप संस्करण नियंत्रण से पहले अनट्रैक किए गए फ़ाइलपथ को जोड़ने की अनुमति देता है।
patch
एक विश्लेषण के लिए status
समान आउटपुट से बाहर चुने जाने की अनुमति देता है।
diff
प्रदर्शित करता है के लिए प्रतिबद्ध होना होगा क्या।
quit
कमान से बाहर।
help
इस आदेश का उपयोग करने पर आगे help
प्रस्तुत करता है।
हंक द्वारा परिवर्तन जोड़ें
आप देख सकते हैं कि पैच फ्लैग का उपयोग करने के लिए काम के "लोभी" का क्या मंचन किया जाएगा:
git add -p
या
git add --patch
यह एक इंटरेक्टिव प्रॉम्प्ट खोलता है जो आपको डिफरेंसेस को देखने की अनुमति देता है और आपको यह तय करने देता है कि आप उन्हें शामिल करना चाहते हैं या नहीं।
Stage this hunk [y,n,q,a,d,/,s,e,?]?
- y अगले चरण के लिए इस हंक को चरणबद्ध करें
- n अगले प्रतिबद्ध के लिए इस हंक को मंच न दें
- क्यू छोड़ दिया; इस हंक या बचे हुए हिस्से में से किसी को भी मंचित न करें
- एक चरण यह हंक और बाद में फ़ाइल में सभी हंक
- d इस हंक या फ़ाइल के किसी भी बाद के हंक को चरणबद्ध न करें
- जी जाने के लिए एक हंक का चयन करें
- / दिए गए regex से मिलते हुए हंक की खोज करें
- j इस हंक को अनिर्धारित छोड़ दें, अगला अडिग हंक देखें
- J इस हंक को अनिच्छुक छोड़ दें, अगले हंक को देखें
- k इस हंक को अनिर्दिष्ट छोड़ दें, पिछले अनिर्णीत हंक को देखें
- K इस हंक को अनिच्छुक छोड़ दें, पिछले हंक को देखें
- s वर्तमान हंक को छोटे टुकड़ों में विभाजित करें
- ई मैन्युअल रूप से वर्तमान हंक को संपादित करें
- ? प्रिंट हंक मदद
इससे उन परिवर्तनों को पकड़ना आसान हो जाता है जो आप करना नहीं चाहते हैं।
आप इसे git add --interactive
और selecting p
माध्यम से भी खोल सकते हैं।
मंचित परिवर्तन दिखाएं
प्रतिबद्ध के लिए मंचन किए जाने वाले झंडे को प्रदर्शित करने के लिए:
git diff --cached