2010-08-18 10 views
25

क्या ये वही बात हैं? यदि हां, तो इतने सारे शब्द क्यों हैं ?!गिट में इंडेक्स, कैश और मंच के बीच क्या अंतर है?

इसके अलावा, मुझे पता है जो एक जगह है जहाँ आप अस्थायी रूप से उन्हें रेपो करने से बिना अपने काम कर प्रतिलिपि में परिवर्तन स्टोर कर सकते हैं है इस बात Git गुप्त कोष कहा जाता है, वहाँ है। मुझे यह टूल वास्तव में उपयोगी लगता है, लेकिन फिर से, यह नाम गिट में अन्य अवधारणाओं के समूह के समान ही है -> यह बहुत भ्रमित है !!

+0

यहाँ एक डेमो है कि पता चलता है कि Git सूचकांक सभी फ़ाइलों को, न केवल बदली हुई फ़ाइलों की सूची में शामिल है है एंड्रॉइड स्टूडियो अपने गिट वर्जन कंट्रोल यूआई में उपयोग करता है, क्योंकि "जोड़ा" मत भूलना। –

+0

@ScottBiggs क्या "जोड़ा गया" है? – allyourcode

+0

मैं अभी भी गिट के साथ एक परेशान नौसिखिया हूँ। "जोड़ें" जो एक बार "प्रतिबद्ध" से पहले करता है, जिसे मैं "स्टैश" (सूप में एक और शब्द जोड़ने के लिए भी उलझन में हूं) से उलझन में हूं। –

उत्तर

28

सूचकांक/मंच/कैश एक ही बात कर रहे हैं - क्यों इतने सारे शब्दों के लिए के रूप में, मुझे लगता है कि सूचकांक 'मूल' शब्द था, लेकिन लोगों को यह भ्रामक पाया है, इसलिए अन्य शब्दों शुरू किए गए थे। और मैं मानता हूं कि यह कभी-कभी चीजों को थोड़ा उलझन में डाल देता है।

stash गिट की सुविधा 'प्रगति' कार्य को स्टोर करने का एक तरीका है जिसे आप किसी विशेष स्टेश निर्देशिका/डेटाबेस में संग्रहीत एक प्रतिबद्ध ऑब्जेक्ट में अभी प्रतिबद्ध नहीं करना चाहते हैं)। मूल stash कमांड कार्यशील निर्देशिका (कैश किए गए/चरणबद्ध और अनचाहे/अस्थिर परिवर्तन दोनों) में किए गए असामान्य परिवर्तनों को संग्रहीत करेगा और फिर कार्यशील निर्देशिका को HEAD पर वापस लाएगा।

यह वास्तव में सूचकांक/मंच/सिवाय इसके कि यह दूर अप्रतिबद्ध परिवर्तन है कि कैश में हैं संग्रहीत करेंगे कैश से संबंधित नहीं है।

यह तो आप एक स्वच्छ वातावरण में विभिन्न काम प्रदर्शन कर सकते हैं आप जल्दी से एक गंदा कार्यशील निर्देशिका और सूचकांक के राज्य सहेजने देता है। बाद में आप स्टैश ऑब्जेक्ट में जानकारी वापस प्राप्त कर सकते हैं और इसे अपनी कार्यशील निर्देशिका में लागू कर सकते हैं (भले ही कार्यशील निर्देशिका स्वयं एक अलग स्थिति में हो)। समझा जा सकता है, जबकि शेष

आधिकारिक git stash मैनपेज, बहुत अच्छी विस्तार है। इसमें stash का उपयोग किया जा सकता है के परिदृश्यों के अच्छे उदाहरण भी हैं।

+3

गिट स्टैश दूसरों से अलग है: यह 'अज्ञात प्रतिबद्धता' की तरह है –

+0

@ पीटर - मैंने स्टैश बिट को और अधिक सही ढंग से संबोधित करने की कोशिश की (मैंने गलती से इसे 'चरण' के बारे में कुछ के रूप में पढ़ा)। –

+0

@ माइकल धन्यवाद! एक बिंदु मुझे आशा है कि आप स्पष्ट करेंगे: अनुच्छेद 2 के अंत में कहा गया है कि "कैश" में स्टैश स्टोर्स में परिवर्तन होता है, लेकिन गिट स्टैश करने से अस्थिर परिवर्तन भी शामिल होते हैं। क्या यह शब्दावली पर एक और भ्रम है, या क्या आप वास्तव में मतलब है कि गिट स्टैश केवल चरणबद्ध परिवर्तनों को संग्रहीत करता है ?? – allyourcode

1

यह वास्तव में बहुत भ्रामक है। 3 शब्दों का उपयोग एक दूसरे के लिए किया जाता है। यहां मेरा ले लिया गया है कि इसे उन सभी चीजों में क्यों कहा जाता है। Git सूचकांक है:

  • एक बाइनरी फ़ाइल .git/index सब पर नज़र रखी फाइलों
  • एक मंचन क्षेत्र के रूप में इस्तेमाल की एक सूचकांक है कि के लिए प्रतिबद्ध
  • शामिल कैश्ड SHA1 फ़ाइलों के लिए हैश (प्रदर्शन को गति देता है)

एक महत्वपूर्ण नोट यह है कि इंडेक्स/कैश/चरण में सभी फाइलों की सूची sourc के अंतर्गत होती है ई नियंत्रण, यहां तक ​​कि अपरिवर्तित भी। दुर्भाग्यवश, "इंडेक्स में फ़ाइल जोड़ें" या "फ़ाइल को इंडेक्स में रखा गया है" जैसे वाक्यांश गलत तरीके से इंगित कर सकते हैं कि इंडेक्स में केवल बदली गई फ़ाइलें हैं।

# setup 
git init 

echo 'x' > committed.txt 
git add committed.txt 
git commit -m 'initial' 

echo 'y' > staged.txt 
git add staged.txt 

echo 'z' > working.txt 

# list HEAD 
git ls-tree --name-only -r HEAD 
# committed.txt 

# list index 
git ls-files 
# committed.txt 
# staged.txt 

# raw content of .git/index 
strings .git/index 
# DIRC 
# committed.txt 
# staged.txt 
# TREE 

# list working dir 
ls -1 
# committed.txt 
# staged.txt 
# working.txt 

अतिरिक्त पढ़ने:

https://www.kernel.org/pub/software/scm/git/docs/technical/racy-git.txt

What does the git index contain EXACTLY?

+0

शानदार देखें! मुझे लगता है कि आप का मतलब है ls-l नहीं ls -1 – user5389726598465

संबंधित मुद्दे