Git इंडेक्स में वास्तव में क्या होता है?


178

Git इंडेक्स में वास्तव में क्या होता है, और इंडेक्स की सामग्री को देखने के लिए मैं किस कमांड का उपयोग कर सकता हूं?


अपडेट करें

आपके सभी उत्तरों के लिए धन्यवाद। मुझे पता है कि सूचकांक एक मंचन क्षेत्र के रूप में कार्य करता है, और जो प्रतिबद्ध है वह कार्यशील पेड़ के बजाय सूचकांक में है। मैं केवल इस बारे में उत्सुक हूं कि सूचकांक वस्तु क्या है। मुझे लगता है कि यह फ़ाइल नाम / निर्देशिका नाम, SHA-1 जोड़े, आभासी पेड़ की एक सूची हो सकती है?

क्या जीआईटी शब्दावली में, कोई प्लंबिंग कमांड जिसे मैं इंडेक्स की सामग्री को सूचीबद्ध करने के लिए उपयोग कर सकता हूं?


पालन ​​करें: ralfebert.de/blog/tools/visual_git_tutorial_1
user225312

3
आपको डायग्राम पढ़ना और देखना चाहिए - बहुत उपयोगी: gitguys.com/topics/whats-the-deal-with-the-git-index
kernix

1
@kernix डोमेन समाप्त हो गया है। अब बहुत उपयोगी नहीं है।
नरेन्द्र-चौधरी

जवाबों:


162

Git पुस्तक में एक इंडेक्स शामिल है पर एक लेख है :

सूचकांक एक द्विआधारी फ़ाइल है (आमतौर पर रखी जाती है .git/index) जिसमें पथ नामों की एक क्रमबद्ध सूची होती है, जिनमें से प्रत्येक अनुमतियों और एक धुंधली वस्तु का SHA1 होता है; git ls-filesआप सूचकांक की सामग्री दिखा सकते हैं:

$ git ls-files --stage
100644 63c918c667fa005ff12ad89437f2fdc80926e21c 0   .gitignore
100644 5529b198e8d14decbe4ad99db3f7fb632de0439d 0   .mailmap

वयस्क Git समस्या है कि संरचना पर कुछ और जानकारी देता है:

सूचकांक git में सबसे महत्वपूर्ण डेटा संरचनाओं में से एक है।
यह पथों की सूची और उनके ऑब्जेक्ट नामों की रिकॉर्डिंग करके एक आभासी कार्यशील वृक्ष की स्थिति का प्रतिनिधित्व करता है और अगले पेड़ की वस्तु को लिखने के लिए एक स्टेजिंग क्षेत्र के रूप में कार्य करता है।
राज्य इस अर्थ में "आभासी" है कि यह जरूरी नहीं है, और अक्सर काम करने वाले पेड़ में फाइलों से मेल नहीं खाता है।


अधिक देखने के लिए, cf. " git / git / प्रलेखन / तकनीकी / सूचकांक-format.txt ":

Git अनुक्रमणिका फ़ाइल में निम्न प्रारूप है

सभी बाइनरी नंबर नेटवर्क बाइट ऑर्डर में हैं।
संस्करण 2 यहाँ वर्णित है जब तक कि अन्यथा न कहा गया हो।

  • एक 12-बाइट हेडर जिसमें शामिल हैं:
    • 4-बाइट हस्ताक्षर :
      हस्ताक्षर {' D', ' I', ' R', ' C'} ("के लिए खड़ा है dircache)"
    • 4-बाइट संस्करण संख्या :
      वर्तमान समर्थित संस्करण 2, 3 और 4 हैं।
    • सूचकांक प्रविष्टियों की 32-बिट संख्या।
  • अनुक्रमित अनुक्रमित प्रविष्टियों की एक संख्या ।
  • एक्सटेंशन :
    एक्सटेंशन को हस्ताक्षर द्वारा पहचाना जाता है।
    यदि Git उन्हें नहीं समझता है तो वैकल्पिक एक्सटेंशन को अनदेखा किया जा सकता है।
    Git वर्तमान में कैश्ड ट्री का समर्थन करता है और पूर्ववत एक्सटेंशन को हल करता है।
    • 4-बाइट एक्सटेंशन हस्ताक्षर। यदि पहली बाइट ' A' .. ' Z' है तो विस्तार वैकल्पिक है और इसे नजरअंदाज किया जा सकता है।
    • विस्तार का 32-बिट आकार
    • एक्सटेंशन डेटा
  • इस चेकसम से पहले इंडेक्स फ़ाइल की सामग्री पर 160-बिट SHA-1।

mljrg टिप्पणी :

यदि अनुक्रमणिका वह स्थान है जहां अगली प्रतिबद्ध तैयार की जाती है, तो git ls-files -sप्रतिबद्ध होने के बाद कुछ भी क्यों नहीं " " लौटाता है?

क्योंकि सूचकांक दर्शाता है कि क्या ट्रैक किया जा रहा है , और सही होने के बाद, जो ट्रैक किया जा रहा है, वह अंतिम प्रतिबद्ध ( git diff --cachedरिटर्न कुछ नहीं) के समान है ।

इसलिए git ls-files -sट्रैक की गई सभी फाइलों (ऑब्जेक्ट का नाम, मोड बिट्स और आउटपुट में स्टेज नंबर) को सूचीबद्ध करता है।

उस सूची (तत्व को ट्रैक किया गया) को एक कमिट की सामग्री के साथ आरंभीकृत किया गया है।
जब आप शाखा को स्विच करते हैं, तो अनुक्रमणिका सामग्री उस शाखा के संदर्भ में रीसेट हो जाती है जिसे आपने अभी-अभी स्विच किया है।


Git 2.20 (Q4 2018) एक सूचकांक प्रविष्टि ऑफसेट तालिका (IEOT) जोड़ता है :

देखें प्रतिबद्ध 77ff112 , 3,255,089 प्रतिबद्ध , abb4bb8 प्रतिबद्ध , c780b9c प्रतिबद्ध , 3b1d9e0 प्रतिबद्ध , 371ed0d प्रतिबद्ध (10 अक्टू 2018) द्वारा बेन ज़िंदादिल ( benpeart)Nguy Thn Thái Ngọc Duy ( ) द्वारा प्रतिबद्ध 252d079 (26 सितंबर 2018)
देखें । (द्वारा विलय Junio सी Hamano - - में प्रतिबद्ध e27bfaa , 19 अक्टू 2018)pclouds
gitster

ieot: इंडेक्स एंट्री ऑफ़सेट टेबल (IEOT) एक्सटेंशन जोड़ें

यह पैच सूचकांक में अतिरिक्त डेटा जोड़कर सूचकांक को लोड करने की सीपीयू लागत को संबोधित करने में सक्षम बनाता है जो हमें कैश प्रविष्टियों की कुशलता से बहु-धागाकरण और रूपांतरण की अनुमति देगा।

यह एक (वैकल्पिक) इंडेक्स एक्सटेंशन को जोड़कर इसे पूरा करता है जो कि इंडेक्स फाइल में कैश एंट्रीज के ब्लॉक के लिए ऑफसेट है।

वी 4 इंडेक्स के लिए यह काम करने के लिए, कैश प्रविष्टियों को लिखते समय, यह समय-समय पर वर्तमान प्रविष्टि को एन्कोडिंग द्वारा उपसर्ग-संपीड़न को "रीसेट" करता है जैसे कि पिछली प्रविष्टि के लिए पथ का नाम पूरी तरह से अलग है और IEOT में उस प्रविष्टि के ऑफसेट को बचाता है ।
मूल रूप से, V4 अनुक्रमित के साथ, यह उपसर्ग-संकुचित प्रविष्टियों के ब्लॉक में ऑफसेट उत्पन्न करता है।

साथ नई index.threads config सेटिंग , सूचकांक लोड हो रहा है अब तेजी से होता है।


परिणामस्वरूप ( IEOT का उपयोग करके ), Git 2.23 (Q3 2019) के लिए 7bd9631 क्लीन-अप read-cache.c load_cache_entries_threaded()फ़ंक्शन करें।

देखें प्रतिबद्ध 8373037 , d713e88 प्रतिबद्ध , d92349d प्रतिबद्ध , 113c29a प्रतिबद्ध , प्रतिबद्ध c95fc72 , प्रतिबद्ध 7a2a721 , c016579 प्रतिबद्ध , प्रतिबद्ध be27fb7 , प्रतिबद्ध 13a1781 , प्रतिबद्ध 7bd9631 , प्रतिबद्ध 3c1dce8 , cf7a901 प्रतिबद्ध , प्रतिबद्ध d64db5b , प्रतिबद्ध 76a7bc0 (09 मई 2019) द्वारा जेफ राजा ( peff)
(द्वारा विलय Junio सी Hamano - gitster- में प्रतिबद्ध c0e78f7 , 13 जून 2019)

read-cache: थ्रेडेड लोड से अप्रयुक्त पैरामीटर ड्रॉप करें

load_cache_entries_threaded()समारोह एक लेता src_offsetपैरामीटर है कि यह उपयोग नहीं करता। यह 77ff112 में इसकी स्थापना के बाद से किया गया है read-cache: ( कार्यकर्ता सूत्र, 2018-10-10, Git v2.20.0-rc0 पर लोड कैश प्रविष्टियों)।

मेलिंग सूची पर खुदाई, वह पैरामीटर श्रृंखला के पहले पुनरावृत्ति का हिस्सा था , लेकिन जब IEOT एक्सटेंशन का उपयोग करके कोड स्विच किया गया तो अनावश्यक हो गया।


6
महत्व के बारे में अगर Git मॉडल में सूचकांक, देखें stackoverflow.com/questions/1450348/…
VONC

ऊपर दिया गया पहला लिंक git-scm के एक संस्करण की ओर इशारा करता है, जिसमें इंडेक्स पर कोई लेख नहीं है। मुझे लगता है कि इरादा यहाँ इंगित करने के लिए था: schacon.github.io/gitbook/7_the_git_index.html
क्रिस

1
@KrisGiesing लिंक के लिए धन्यवाद। मैंने जवाब अपडेट कर दिया है।
VonC

@VonC यदि अनुक्रमणिका वह स्थान है जहाँ अगली कमिट तैयार की जाती है, तो "gs ls-files -s" के बदले कुछ भी क्यों नहीं लौटता है? इंडेक्स के बारे में कुछ और भी होना चाहिए जो आपने अपने उत्तर में रखा है।
mljrg

@mljrg मुझे यकीन नहीं है कि मैं आपका अनुसरण करूंगा: एक कमिट के बाद , स्टेज (जहां कमिट तैयार किया जा रहा था) खाली हो जाएगा, क्योंकि कमिट हो चुका है, क्या ऐसा नहीं होगा?
वॉनच

62

बिट विश्लेषण से

मैंने प्रारूप को बेहतर ढंग से समझने और अधिक विस्तार से कुछ क्षेत्रों पर शोध करने के लिए थोड़ा परीक्षण करने का निर्णय लिया है।

परिणाम संस्करण गिट संस्करणों के लिए समान हैं 1.8.5.2और 2.3

मैंने उन बिंदुओं को चिह्नित किया है जो मुझे यकीन नहीं है / नहीं मिला है TODO: कृपया उन बिंदुओं को पूरक करने के लिए स्वतंत्र महसूस करें।

जैसा कि दूसरों ने उल्लेख किया है, सूचकांक .git/indexएक मानक ट्री ऑब्जेक्ट के रूप में नहीं, के तहत संग्रहीत किया जाता है, और इसका प्रारूप द्विआधारी और प्रलेखित है: https://github.com/git/git/blob/master/Documentation/technical/index-format पर। टेक्स्ट

सूचकांक को परिभाषित करने वाली प्रमुख संरचनाएँ cache.h पर हैं , क्योंकि सूचकांक कमिट बनाने के लिए एक कैश है।

सेट अप

जब हम एक परीक्षण भंडार शुरू करते हैं:

git init
echo a > b
git add b
tree --charset=ascii

.gitनिर्देशिका इस तरह दिखती है:

.git/objects/
|-- 78
|   `-- 981922613b2afb6025042ff6bd878ac1994e85
|-- info
`-- pack

और अगर हमें एकमात्र वस्तु की सामग्री मिलती है:

git cat-file -p 78981922613b2afb6025042ff6bd878ac1994e85

हमें मिलता है a। यह इंगित करता है कि:

  • indexफ़ाइल सामग्री के लिए अंक, क्योंकि git add bएक बूँद वस्तु बनाया
  • यह मेटाडेटा को इंडेक्स फ़ाइल में संग्रहीत करता है, ट्री ऑब्जेक्ट में नहीं, क्योंकि केवल एक ही ऑब्जेक्ट था: बूँद (नियमित गिट वस्तुओं पर, बूँद मेटाडाटा को पेड़ पर संग्रहीत किया जाता है)

एचडी विश्लेषण

अब हम सूचकांक को स्वयं देखें:

hd .git/index

देता है:

00000000  44 49 52 43 00 00 00 02  00 00 00 01 54 09 76 e6  |DIRC.... ....T.v.|
00000010  1d 81 6f c6 54 09 76 e6  1d 81 6f c6 00 00 08 05  |..o.T.v. ..o.....|
00000020  00 e4 2e 76 00 00 81 a4  00 00 03 e8 00 00 03 e8  |...v.... ........|
00000030  00 00 00 02 78 98 19 22  61 3b 2a fb 60 25 04 2f  |....x.." a;*.`%./|
00000040  f6 bd 87 8a c1 99 4e 85  00 01 62 00 ee 33 c0 3a  |......N. ..b..3.:|
00000050  be 41 4b 1f d7 1d 33 a9  da d4 93 9a 09 ab 49 94  |.AK...3. ......I.|
00000060

आगे हम निष्कर्ष निकालेंगे:

  | 0           | 4            | 8           | C              |
  |-------------|--------------|-------------|----------------|
0 | DIRC        | Version      | File count  | ctime       ...| 0
  | ...         | mtime                      | device         |
2 | inode       | mode         | UID         | GID            | 2
  | File size   | Entry SHA-1                              ...|
4 | ...                        | Flags       | Index SHA-1 ...| 4
  | ...                                                       |

पहले हेडर आता है, जिसे परिभाषित किया गया है: संरचनात्मक cache_header :

  • 44 49 52 43: DIRC। TODO: यह क्यों आवश्यक है?

  • 00 00 00 02: प्रारूप संस्करण: 2. सूचकांक प्रारूप समय के साथ विकसित हुआ है। वर्तमान में संस्करण 4 तक मौजूद है। GitHub पर विभिन्न कंप्यूटरों के बीच सहयोग करते समय सूचकांक का प्रारूप एक मुद्दा नहीं होना चाहिए क्योंकि नंगे रिपॉजिटरी सूचकांक को संग्रहीत नहीं करते हैं: यह क्लोन समय पर उत्पन्न होता है।

  • 00 00 00 01: सूचकांक पर फाइलों की गिनती: सिर्फ एक b,।

इसके बाद सूचकांक प्रविष्टियों की एक सूची शुरू होती है, जिसे हम cache -entry से परिभाषित करते हैं। इसमें शामिल है:

  • फ़ाइल मेटाडेटा का एक गुच्छा: 8 बाइट ctime, 8 बाइट mtime, फिर 4 बाइट: डिवाइस, इनोड, मोड, यूआईडी और जीआईडी।

    नोट कैसे:

    • ctimeऔर जैसा कि हमने फाइल को संशोधित नहीं किया है, mtimeवैसा ही 54 09 76 e6 1d 81 6f c6अपेक्षित है

      हेक्स में © के बाद से पहले बाइट्स सेकंड हैं:

      date --date="@$(printf "%x" "540976e6")"
      

      देता है:

      Fri Sep  5 10:40:06 CEST 2014
      

      जब मैंने यह उदाहरण दिया है।

      दूसरे 4 बाइट्स नैनोसेकंड हैं।

    • यूआईडी और जीआईडी 00 00 03 e8, हेक्स में 1000 हैं : एकल उपयोगकर्ता सेटअप के लिए एक सामान्य मूल्य।

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

  • पंक्ति के आरंभ में 30: 00 00 00 02: फ़ाइल का आकार: 2 बाइट्स ( aऔर \nसे echo)

  • 78 98 19 22 ... c1 99 4e 85: प्रविष्टि की पिछली सामग्री पर 20 बाइट SHA-1। ध्यान दें कि मान्य मान्य ध्वज के साथ मेरे प्रयोगों के अनुसार , इसके बाद के झंडे को इस SHA-1 में नहीं माना गया है।

  • 2 बाइट झंडे: 00 01

    • 1 बिट: मान्य ध्वज मान। मेरी जांच से संकेत मिलता है कि इस खराब नाम वाले झंडे में git update-index --assume-unchangedअपना राज्य है: https://stackoverflow.com/a/28657085/3255245

    • 1 बिट विस्तारित ध्वज। निर्धारित करता है कि विस्तारित झंडे मौजूद हैं या नहीं। 0संस्करण 2 पर होना चाहिए जिसमें झंडे नहीं हैं।

    • मर्ज के दौरान उपयोग किए जाने वाले 2 बिट चरण ध्वज। चरणों में प्रलेखित हैं man git-merge:

      • 0: नियमित फ़ाइल, मर्ज संघर्ष में नहीं
      • 1: आधार
      • 2: हमारा
      • 3: उन लोगों के

      मर्ज संघर्ष के दौरान, 1-3 से सभी चरणों को अनुक्रमणिका में संग्रहीत किया जाता है जैसे संचालन की अनुमति देने के लिए git checkout --ours

      यदि आप git add, तो एक चरण 0 पथ के लिए अनुक्रमणिका में जोड़ा जाता है, और गिट को पता चल जाएगा कि संघर्ष को हल के रूप में चिह्नित किया गया है। TODO: इसे जांचें।

    • पथ की 12 बिट लंबाई जो इस प्रकार है 0 01: 1 बाइट केवल पथ थाb

  • 2 बाइट विस्तारित झंडे। केवल तभी सार्थक होगा जब मूल झंडे पर "विस्तारित ध्वज" स्थापित किया गया था। करने के लिए।

  • 62(ASCII b): चर लंबाई पथ। पिछले झंडे में निर्धारित लंबाई, यहाँ सिर्फ 1 बाइट b,।

फिर 00शून्य पैडिंग का 1-8 बाइट आता है जिससे कि रास्ता शून्य-समाप्त हो जाएगा और सूचकांक 8 बाइट्स के कई में समाप्त हो जाएगा। यह केवल इंडेक्स संस्करण 4 से पहले होता है।

कोई एक्सटेंशन का उपयोग नहीं किया गया था। Git यह जानता है क्योंकि चेकसम के लिए फ़ाइल में पर्याप्त स्थान नहीं बचा होगा।

अंत ee 33 c0 3a .. 09 ab 49 94में इंडेक्स की सामग्री पर 20 बाइट चेकसम है ।


1
बहुत ही रोचक। +1। यह अच्छी तरह से मेरे खुद के जवाब दिखाता है । मुझे आश्चर्य है कि यदि वे परिणाम नवीनतम Git 2.1+ के साथ बदल जाएंगे।
वॉन सीपीसी

3
@ निल्सबॉम हां, यह भी काम करेगा। कार्यक्रमों की व्याख्या करते समय, मैं दो दृष्टिकोण लेना पसंद करता हूं: पहला अनुभवजन्य कि यह क्या आउटपुट उत्पन्न करता है, और उसके बाद ही स्रोत पढ़ें। अन्यथा एक स्रोत कोड एज मामलों में पकड़ा जा सकता है जो साधारण आउटपुट पर भी दिखाई नहीं देते हैं। बेशक, मैंने मुझे मार्गदर्शन करने में मदद करने के लिए स्रोत के ढांचे को देखा, और हर TODO को मेरे पढ़ने को हल किया जा सकता है कि कैसे उन संरचनाओं को हेरफेर किया जाता है, जो कि कठिन हिस्सा है।
सिरो सेंटिल्ली 郝海东 冠状 i i 法轮功 '

1
@CiroSantilli 六四 事件 纳米比亚 威 视 If: यदि मैं एक हेक्स संपादक में सूचकांक को संशोधित करता हूं और इसे 20 बाइट चेकसम अपडेट करता हूं, तो क्या sha1 को अद्यतन करने के लिए एक कमांड है जो अन्य ऑब्जेक्ट्स में संग्रहीत है? (git शिकायत करता है कि सूचकांक का sha1 हस्ताक्षर भ्रष्ट है) । साथ ही इंडेक्स डेटा को पुश रिक्वेस्ट पर भेजे जाने पर पूरी तरह से अलग तरीके से स्टोर किया जाता है।
14:22 पर user2284570

1
@CiroSantilli 六四 事件 纳米比亚 ill ill Security: सुरक्षा उद्देश्य। बस अच्छी तरह से पता है कि रेखापुंज छवि फ़ाइलों के हमलों के लिए खोज डेटाबेस / वस्तुओं पर लागू होते हैं। (बेशक मुझे पता है कि अधिकांश कार्यान्वयन ने हाल ही में उस परिप्रेक्ष्य का ध्यान रखा, लेकिन शायद सभी नहीं)  इसलिए मैं विशेष रूप से द्विआधारी डेटा संरचनाओं की खोज कर रहा हूं जो एक सरणी की लंबाई बताते हैं। (पाठ बफ़र्स के विषय में यह लगता है कि शून्य समाप्ति पंक्तियों की संख्या को बताने का नियम है)
user2284570

1
git addआपके संबंध में TODO: आप सही हैं। यदि आपके पास दिए गए पथ पर उच्च-चरण अनुक्रमणिका प्रविष्टियाँ (एक विरोधाभास) हैं, जब आप git addउस पथ को, सभी उच्च-चरण अनुक्रमणिका प्रविष्टियाँ निकाल दी जाएँगी और कार्यशील निर्देशिका प्रतिलिपि को चरण में जोड़ दिया जाएगा 0। (संघर्ष का समाधान)।
एडवर्ड थॉमसन

11

Git इंडेक्स आपकी वर्किंग डायरेक्टरी और आपकी रिपॉजिटरी के बीच एक स्टेजिंग एरिया है। आप उन परिवर्तनों का एक सेट बनाने के लिए सूचकांक का उपयोग कर सकते हैं, जिन्हें आप एक साथ करना चाहते हैं। जब आप एक प्रतिबद्ध बनाते हैं, तो जो प्रतिबद्ध है वह इस सूचकांक में वर्तमान में है, न कि आपके कार्य निर्देशिका में क्या है।

यह देखने के लिए कि सूचकांक के अंदर क्या है, कमांड जारी करें:

git status

जब आप git स्टेटस चलाते हैं, तो आप देख सकते हैं कि कौन सी फ़ाइलों का मंचन किया जाता है (वर्तमान में आपके सूचकांक में), जो संशोधित हैं, लेकिन अभी तक मंचन नहीं किया गया है, और जो पूरी तरह से अनट्रैक हैं।

आप पढ़ सकते हैं इस । एक Google खोज कई लिंक को फेंकता है, जो काफी आत्मनिर्भर होना चाहिए।


7
git statusसूचकांक से सभी फाइलों को सूचीबद्ध नहीं करता है। यह केवल उन फाइलों को सूचीबद्ध करता है जो इंडेक्स और वर्किंग डायरेक्टरी के बीच भिन्न होती हैं। सभी फ़ाइलों को इंडेक्स में देखने के लिए, आपको उपयोग करने की आवश्यकता है git ls-files
आकाश अग्रवाल

1
@AkashAgrawal, वास्तव में सूची फ़ाइलों को सूचीबद्ध git status करता है, भले ही वे सूचकांक और कार्यदिवस के बीच भिन्न हों।
एक्यूमेनस

3
हां, यह सूचकांक फाइलों में से कुछ को सूचीबद्ध करता है, लेकिन यह आपको सूचकांक के अंदर वह सब कुछ नहीं दिखाता है, जो उसके उत्तर में उसका कथन कहता है। यह कहने जैसा है कि एक बॉक्स के अंदर 2 हरी गेंदें और 3 लाल गेंदें हैं। बॉक्स के अंदर व्हाट्स देखने के लिए, 2 हरे रंग की गेंदों को बाहर निकालें। आकाश ने जो कहा वह सबसे सटीक है, सूचकांक की सभी फाइलों को देखने के लिए, git ls-files का उपयोग करें।
dave4jr

3
वास्तव में। git statusउन फ़ाइलों को सूचीबद्ध करता है जो इंडेक्स में हैं, हां, लेकिन इंडेक्स की सभी फाइलों को सूचीबद्ध नहीं करता है । यह बताना कि git status वास्तव में कैसे काम करता है, किसी प्रश्न का एक लाभदायक उत्तर होगा, हालांकि यह शायद नहीं है।
एडवर्ड थॉमसन

1
git statusकार्यशील स्थिति (वर्किंग ट्री और इंडेक्स के बीच अंतर) को दर्शाता है। यह वास्तव में सूचकांक नहीं दिखाता है। git-scm.com/docs/git-status
wisbucky

1

यहाँ वही है जो आपको बिल्कुल आवश्यक है, इस कमांड का उपयोग करें।

$ binwalk index

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
1717          0x6B5           Unix path: /company/user/user/delete.php
1813          0x715           Unix path: /company/user/user/get.php
1909          0x775           Unix path: /company/user/user/post.php
2005          0x7D5           Unix path: /company/user/user/put.php
3373          0xD2D           Unix path: /urban-airship/channel/channel/post.php
3789          0xECD           Unix path: /urban-airship/named-user/named-user/post.php
3901          0xF3D           Unix path: /user/categories/categories/delete.php
4005          0xFA5           Unix path: /user/categories/categories/get.php
4109          0x100D          Unix path: /user/categories/categories/put.php
4309          0x10D5          Unix path: /user/favorites/favorites/delete.php

0

Git इंडेक्स एक बाइनरी फ़ाइल (आमतौर पर रखी गई .git/index) होती है जिसमें पथ नामों की क्रमबद्ध सूची होती है, जिनमें से प्रत्येक में अनुमतियाँ और एक बूँद ऑब्जेक्ट का SHA1 होता है;

git ls-filesआप सूचकांक की सामग्री दिखा सकते हैं। कृपया ध्यान दें कि शब्द index, stageऔर cacheगिट में एक ही बात है: वे परस्पर विनिमय के लिए उपयोग किए जाते हैं।

यहां छवि विवरण दर्ज करें

Git index या Git cache में 3 महत्वपूर्ण गुण हैं:

  1. अनुक्रमणिका में एकल (विशिष्ट रूप से निर्धारित) ट्री ऑब्जेक्ट जनरेट करने के लिए आवश्यक सभी जानकारी है।
  2. सूचकांक पेड़ की वस्तु को परिभाषित करने और काम करने वाले पेड़ के बीच तेजी से तुलना करने में सक्षम बनाता है।
  3. यह अलग-अलग पेड़ की वस्तुओं के बीच मर्ज संघर्ष के बारे में जानकारी का कुशलता से प्रतिनिधित्व कर सकता है, जिससे प्रत्येक पथनाम को पेड़ों के बारे में पर्याप्त जानकारी के साथ जुड़े रहने की अनुमति मिलती है कि आप उनके बीच तीन-तरफा मर्ज बना सकते हैं।

स्रोत :

  1. https://mincong.io/2018/04/28/git-index/
  2. https://medium.com/hackernoon/understanding-git-index-4821a0765cf
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.