গিট ইনডেক্সে হুবহু কী রয়েছে?


178

গিট সূচীতে হুবহু কী রয়েছে এবং সূচকের বিষয়বস্তু দেখতে আমি কোন আদেশ ব্যবহার করতে পারি?


হালনাগাদ

আপনার সমস্ত উত্তরের জন্য ধন্যবাদ। আমি জানি যে সূচকটি একটি মঞ্চ অঞ্চল হিসাবে কাজ করে এবং যা প্রতিশ্রুতিবদ্ধ তা কার্যকারী গাছের চেয়ে সূচকেই হয়। একটি সূচক অবজেক্টটি কী নিয়ে গঠিত তা সম্পর্কে আমি কেবল কৌতূহলী। আমার ধারণা এটি ফাইলের নাম / ডিরেক্টরি নাম, SHA-1 জোড়া, এক ধরণের ভার্চুয়াল ট্রি হতে পারে?

গিট পরিভাষায় কি কোনও প্লাম্বিং কমান্ড যা আমি সূচকের বিষয়বস্তু তালিকাবদ্ধ করতে ব্যবহার করতে পারি?



3
আপনার ডায়াগ্রামগুলি পড়তে এবং দেখতে হবে - খুব সহায়ক: gitguys.com/topics/whats-the-deal-with-tit-git-index
kernix

1
@ কার্নিক্স ডোমেনটির মেয়াদ শেষ হয়েছে। আর খুব একটা সহায়ক নয়।
নরেন্দ্র-চৌধারি

উত্তর:


162

গিট বইতে কোন সূচক অন্তর্ভুক্ত রয়েছে সে সম্পর্কে একটি নিবন্ধ রয়েছে :

সূচকটি একটি বাইনারি ফাইল (সাধারণত এটিতে রাখা হয় .git/index) যে কোনও একটি ব্লব অবজেক্টের অনুমতি এবং SHA1 সহ প্রতিটি নামের তালিকা অনুসারে বাছাই করা তালিকা থাকে; git ls-filesআপনাকে সূচীর বিষয়বস্তু প্রদর্শন করতে পারে:

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

উদ্দীপক Git সমস্যা যে কাঠামো আরো কিছু বিবরণ দেয়:

সূচকটি গিটের মধ্যে অন্যতম গুরুত্বপূর্ণ ডেটা স্ট্রাকচার।
এটি পাথ এবং তাদের অবজেক্টের নামের তালিকা রেকর্ড করে একটি ভার্চুয়াল ওয়ার্কিং ট্রি রাজ্যের প্রতিনিধিত্ব করে এবং পরবর্তী বৃক্ষ প্রতিশ্রুতিবদ্ধ হওয়ার জন্য লিখিতভাবে স্টেজিং অঞ্চল হিসাবে কাজ করে।
রাষ্ট্রটি এই অর্থে "ভার্চুয়াল" যে এটি কার্যকরী গাছের ফাইলগুলির সাথে মেলে না এবং প্রায়ই হয় না।


আরও দেখতে, সিএফ। " গিট / গিট / ডকুমেন্টেশন / টেকনিক্যাল / ইনডেক্স-ফরম্যাট.txt ":

গিট ইনডেক্স ফাইলের নিম্নলিখিত ফর্ম্যাট রয়েছে

সমস্ত বাইনারি নম্বর নেটওয়ার্ক বাইট ক্রমে রয়েছে।
সংস্করণ 2 অন্যথায় বর্ণিত না হলে এখানে বর্ণিত হয়েছে।

  • সমন্বিত একটি 12-বাইট শিরোনাম:
    • 4-বাইট স্বাক্ষর :
      স্বাক্ষরটি হ'ল ' D', ' I', ' R', ' C'} (এর অর্থ " dircache" ")
    • 4-বাইট সংস্করণ নম্বর :
      বর্তমান সমর্থিত সংস্করণগুলি 2, 3 এবং 4।
    • সূচি প্রবেশের 32-বিট সংখ্যা।
  • সাজানো বেশ কয়েকটি সূচক এন্ট্রি
  • এক্সটেনশনগুলি :
    এক্সটেনশনগুলি স্বাক্ষর দ্বারা চিহ্নিত করা হয়।
    গিট না বুঝতে পারলে alচ্ছিক এক্সটেনশনগুলি উপেক্ষা করা যেতে পারে।
    গিট বর্তমানে ক্যাশেড ট্রি সমর্থন করে এবং এক্সটেনশনগুলি পূর্বাবস্থায়িত করুন।
    • 4-বাইট এক্সটেনশন স্বাক্ষর। যদি প্রথম বাইটটি ' A' .. ' Z' হয় তবে এক্সটেনশনটি alচ্ছিক এবং এড়ানো যায়।
    • এক্সটেনশনের 32-বিট আকার
    • এক্সটেনশন ডেটা
  • এই চেকসামের আগে সূচি ফাইলের সামগ্রীতে 160-বিট SHA-1

mljrg মন্তব্য :

যদি সূচকটি এমন জায়গা হয় যেখানে পরের প্রতিশ্রুতি প্রস্তুত করা হয়, তবে git ls-files -sপ্রতিশ্রুতি দেওয়ার পরে " " কেন কিছুই ফিরিয়ে দেয় না?

কারণ সূচকটি যা ট্র্যাক করা হচ্ছে তা প্রতিনিধিত্ব করে এবং একটি প্রতিশ্রুতি দেওয়ার পরে, যা ট্র্যাক করা হচ্ছে তা সর্বশেষ কমিটের সমান ( git diff --cachedকিছুই প্রত্যাবর্তন করে না)।

সুতরাং git ls-files -sট্র্যাক করা সমস্ত ফাইলের তালিকা করে (আউটপুটে অবজেক্টের নাম, মোড বিট এবং স্টেজ নম্বর)।

সেই তালিকাটি (উপাদানটির সন্ধানের) প্রতিশ্রুতিবদ্ধ সামগ্রীর সাহায্যে সূচনা করা হয়েছে।
আপনি যখন শাখাটি স্যুইচ করেন, তখন সূচক বিষয়বস্তুটি আপনার সবেমাত্র সরিয়ে যাওয়া শাখার দ্বারা প্রদত্ত প্রতিশ্রুতিতে পুনরায় সেট করা হয়।


গিট 2.20 (Q4 2018) একটি সূচক এন্ট্রি অফসেট সারণী (আইইওটি) যুক্ত করেছে :

দেখুন কমিট 77ff112 , 3255089 কমিট , abb4bb8 কমিট , c780b9c কমিট , 3b1d9e0 কমিট , 371ed0d কমিট (10 অক্টোবর 2018) দ্বারা বেন ধীশক্তিমান ( benpeart)
দেখুন 252d079 কমিট (26 সেপ্টেম্বর 2018) দ্বারা গান Nguyễn গান Thái আরো Ngọc গান Duy ( pclouds)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট e27bfaa , 19 অক্টোবর 2018)

ieot: সূচক এন্ট্রি অফসেট সারণী (আইইওটি) এক্সটেনশন যুক্ত করুন

এই প্যাচ সূচকটিতে অতিরিক্ত ডেটা যুক্ত করে সূচক লোড করার সিপিইউ ব্যয়কে মোকাবিলা করতে সক্ষম করে যা আমাদের ক্যাশে এন্ট্রিগুলির লোডিং এবং রূপান্তরকে দক্ষতার সাথে মাল্টি-থ্রেড করার অনুমতি দেয়।

এটি একটি (alচ্ছিক) সূচক এক্সটেনশান যুক্ত করে এটি সম্পাদন করে যা সূচী ফাইলে ক্যাশে প্রবেশের ব্লকগুলিতে অফসেটগুলির একটি সারণী।

ভি 4 সূচকের জন্য এই কাজটি করার জন্য, ক্যাশে এন্ট্রিগুলি লেখার সময় এটি পর্যায়ক্রমে বর্তমান এন্ট্রি এনকোড করে উপসর্গ-সংক্ষেপণটিকে "পুনরায় সেট করে" মনে হয় যেন পূর্বের এন্ট্রিটির পথের নামটি সম্পূর্ণ আলাদা এবং আইইওটিতে সেই প্রবেশের অফসেটটি সংরক্ষণ করে ।
মূলত, ভি 4 ইনডেক্সের সাহায্যে এটি উপসেটগুলি সংক্ষেপিত এন্ট্রিগুলির ব্লকগুলিতে অফসেট তৈরি করে।

সঙ্গে নতুন index.threads কনফিগ সেটিং সূচক লোড করা এখন দ্রুততর।


ফলস্বরূপ ( আইইওটি ব্যবহারের জন্য ), গিট 2.23 ( কিউread-cache.c load_cache_entries_threaded() 3 2019) এর জন্য 7bd9631 ফাংশনটি সাফ করুন commit

দেখুন কমিট 8373037 , d713e88 কমিট , d92349d কমিট , 113c29a কমিট , কমিট c95fc72 , কমিট 7a2a721 , c016579 কমিট , কমিট be27fb7 , কমিট 13a1781 , কমিট 7bd9631 , কমিট 3c1dce8 , cf7a901 কমিট , কমিট d64db5b , কমিট 76a7bc0 (09 মে 2019) দ্বারা জেফ কিং ( peff)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট c0e78f7 , 13 জুন 2019)

পঠন-ক্যাশে: থ্রেডযুক্ত লোড থেকে অব্যবহৃত প্যারামিটারটি ফেলে দিন

load_cache_entries_threaded()ফাংশন একটি সময় লাগে src_offsetপরামিতি এটি ব্যবহার করে না। এটি এখানে প্রথম থেকেই 77ff112 সালে শুরু হয়েছে ( read-cache: শ্রমিকের থ্রেডগুলিতে লোড ক্যাশে এন্ট্রি, 2018-10-10, গিট ভি 2.20.0-আরসি0)।

মেলিং তালিকায় খনন করা, সেই পরামিতিটি সিরিজের আগের পুনরাবৃত্তির অংশ ছিল , কিন্তু কোডটি আইওটি এক্সটেনশানটি ব্যবহার করে স্যুইচ করলে অপ্রয়োজনীয় হয়ে পড়ে।


6
গুরুত্ব সম্পর্কে যদি গীত মডেল সূচক দেখুন stackoverflow.com/questions/1450348/...
VonC

উপরের প্রথম লিঙ্কটি গিট-স্কেমের সংস্করণে নির্দেশ করে যার সূচীতে কোনও নিবন্ধ নেই। আমি মনে করি অভিপ্রায়টি এখানে উল্লেখ করা ছিল: schacon.github.io/gitbook/7_t_git_index.html
ক্রিস গিজিং

1
@ ক্রিসজিৎসিং লিঙ্কটির জন্য আপনাকে ধন্যবাদ। আমি উত্তর আপডেট করেছি।
ভনসি

@ ভনসি যদি সূচকটি সেই জায়গা যেখানে পরবর্তী কমিট প্রস্তুত করা হয়, তবে "গিট এলএস-ফাইল-গুলি" কমিট করার পরে কিছুই ফিরিয়ে দেয় না কেন? আপনি নিজের উত্তরের চেয়ে সূচক সম্পর্কে আরও কিছু থাকতে হবে।
mljrg

@ এমএলজিআরজি নিশ্চিত নই যে আমি আপনাকে অনুসরণ করছি: প্রতিশ্রুতি দেওয়ার পরে , পর্যায়টি (যেখানে প্রতিশ্রুতি প্রস্তুত করা হয়েছিল) খালি হবে, যেহেতু প্রতিশ্রুতি সম্পন্ন হয়েছে, তাই না?
ভোনসি

62

বিট বিশ্লেষণ দ্বারা বিট

আমি ফর্ম্যাটটি আরও ভালভাবে বুঝতে এবং কিছু ক্ষেত্র আরও বিশদে গবেষণা করার জন্য কিছুটা পরীক্ষা করার সিদ্ধান্ত নিয়েছি।

গিট সংস্করণ 1.8.5.2এবং এর জন্য ফলাফল বেলো একই 2.3

আমি এমন পয়েন্টগুলি চিহ্নিত করেছি যা আমি নিশ্চিত নই / খুঁজে পাইনি TODO: দয়া করে এই বিষয়গুলির পরিপূরক নির্দ্বিধায় অনুভব করুন।

অন্যরা যেমন উল্লেখ করেছে, সূচকটি .git/indexকোনও স্ট্যান্ডার্ড ট্রি অবজেক্ট হিসাবে নয়, এর অধীনে সঞ্চিত রয়েছে এবং এর ফর্ম্যাটটি বাইনারি এবং ডকুমেন্টেড রয়েছে: https://github.com/git/git/blob/master/Docamentation/technical/index-format। পাঠ্য

সূচককে সংজ্ঞায়িত করে এমন প্রধান স্ট্রাকগুলি ক্যাশে এইচ , হ'ল সূচকটি কমিট তৈরির জন্য একটি ক্যাশে।

সেটআপ

যখন আমরা এর সাথে একটি পরীক্ষার সংগ্রহ শুরু করি:

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
  | ...                                                       |

প্রথমে শিরোনাম আসে, এখানে সংজ্ঞায়িত: স্ট্রাক্ট ক্যাশে_হেডার :

  • 44 49 52 43: DIRC। টোডো: কেন এটি প্রয়োজনীয়?

  • 00 00 00 02: বিন্যাস সংস্করণ: ২. সূচী বিন্যাস সময়ের সাথে বিকশিত হয়েছে। বর্তমানে গিগহাবের বিভিন্ন কম্পিউটারের মধ্যে সহযোগিতা করার সময় সূচকের ফর্ম্যাটটি কোনও সমস্যা হওয়া উচিত নয় কারণ খালি সংগ্রহস্থলগুলি সূচকটি সংরক্ষণ করে না: এটি ক্লোন সময়ে তৈরি হয়।

  • 00 00 00 01: সূচীতে ফাইলগুলির গণনা: কেবল একটি b,।

এরপরে সূচিপত্রের তালিকা তালিকাবদ্ধ করা হয়, স্ট্রাক্ট ক্যাশে_এন্ট্রি দ্বারা সংজ্ঞায়িত এখানে আমাদের কেবল একটি রয়েছে। এতে রয়েছে:

  • একগুচ্ছ ফাইলের মেটাডেটা: 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 e81000, একক ব্যবহারকারী সেটআপের জন্য একটি সাধারণ মান।

    এই সমস্ত মেটাডেটা, যার বেশিরভাগ গাছের বস্তুতে উপস্থিত নেই, গিটকে সম্পূর্ণ সামগ্রীর তুলনা না করেই কোনও ফাইল দ্রুত পরিবর্তন হয়েছে কিনা তা পরীক্ষা করতে অনুমতি দেয় check

  • লাইনের শুরুতে 30: 00 00 00 02: ফাইলের আকার: 2 বাইট ( aএবং \nথেকে echo)

  • 78 98 19 22 ... c1 99 4e 85: প্রবেশের পূর্ববর্তী সামগ্রীর চেয়ে 20 বাইট SHA-1। নোট করুন যে বৈধ পতাকাটি ধরে নিয়ে আমার পরীক্ষাগুলি অনুসারে , যে পতাকাগুলি অনুসরণ করবে সেগুলি এই এসএএএ -১ এ বিবেচনা করা হবে না।

  • 2 বাইট পতাকা: 00 01

    • 1 বিট: বৈধ পতাকা অনুমান করুন। আমার তদন্তগুলি ইঙ্গিত দেয় যে এই নামমাত্র নামকরণ করা পতাকাটি যেখানে git update-index --assume-unchangedতার রাজ্য সংরক্ষণ করে: https://stackoverflow.com/a/28657085/895245

    • 1 বিট প্রসারিত পতাকা। বর্ধিত পতাকা উপস্থিত রয়েছে কি না তা নির্ধারণ করে। 0সংস্করণ 2-এ অবশ্যই থাকতে হবে যার প্রসারিত পতাকা নেই।

    • মার্জ চলাকালীন 2 বিট স্টেজ পতাকা ব্যবহৃত হয়। পর্যায়গুলি এখানে নথিভুক্ত করা হয় man git-merge:

      • 0: নিয়মিত ফাইল, একীকরণের বিরোধে নয়
      • 1: বেস
      • 2: আমাদের
      • 3: তাদের

      মার্জ সংঘাত চলাকালীন, 1-3 টি থেকে সমস্ত স্তর সূচীতে সঞ্চিত থাকে যাতে কাজ করার অনুমতি দেয় git checkout --ours

      যদি আপনি হন git add, তবে পথের জন্য সূচীতে 0 পর্যায় যুক্ত করা হবে এবং গিট জানবে যে দ্বন্দ্বটিকে সমাধান হিসাবে চিহ্নিত করা হয়েছে। টোডো: এটি পরীক্ষা করে দেখুন।

    • যে পথটি অনুসরণ করবে তার 12 বিট দৈর্ঘ্য 0 01: 1 টি বাইট কেবল পথটি ছিলb

  • 2 বাইট বর্ধিত পতাকা। "বর্ধিত পতাকা" বেসিক পতাকাগুলিতে সেট করা থাকলে কেবল অর্থবোধক। করতে.

  • 62(ASCII b): পরিবর্তনশীল দৈর্ঘ্যের পথ। পূর্ববর্তী পতাকাগুলিতে দৈর্ঘ্য নির্ধারিত হয়, এখানে মাত্র 1 বাইট b,।

তারপরে একটি আসে 00: শূন্য প্যাডিংয়ের 1-8 বাইট যাতে পথটি শূন্য হয়ে যায় এবং সূচকটি 8 টি বাইটের একাধিকতে শেষ হয়। এটি কেবল সূচী সংস্করণ 4 এর আগে ঘটে।

কোনও এক্সটেনশন ব্যবহার করা হয়নি। গিট এটি জানে কারণ ফাইলটিতে চেকসামের জন্য পর্যাপ্ত জায়গা থাকবে না।

অবশেষে ee 33 c0 3a .. 09 ab 49 94সূচকের সামগ্রীতে 20 বাইট চেকসাম রয়েছে।


1
খুব আকর্ষণীয়. +1 টি। এটি আমার নিজের উত্তরটি সুন্দরভাবে ফুটিয়ে তুলেছে। আমি অবাক হয়েছি যদি সর্বশেষতম গিট ২.১++ দিয়ে ফলাফলগুলি পরিবর্তিত হয়।
ভনসি

3
@ নিলস বম হ্যাঁ, এটিও কার্যকর হবে। প্রোগ্রামগুলির ব্যাখ্যার সময়, আমি দুটি পন্থা গ্রহণ করতে পছন্দ করি: এটি কী কী ফলাফল দেয় তা প্রথম দেখার অভিজ্ঞতা এবং কেবলমাত্র উত্সটি পড়ুন। অন্যথায় কেউ সোর্স কোড প্রান্তের মামলায় জড়িয়ে পড়তে পারে যা এমনকি সরল আউটপুটগুলিতে প্রদর্শিত হয় না। অবশ্যই, আমি সোর্স স্ট্রাক্টগুলি আমাকে গাইড করতে সহায়তা করার দিকে নজর দিয়েছিলাম, এবং প্রতিটি টডো আমার পঠনগুলি সমাধান করতে পারে কীভাবে সেই স্ট্রাক্টগুলি কীভাবে পরিচালনা করা হয়, যা শক্ত অংশ।
সিরো সান্তিলি 郝海东 冠状 病 六四 事件 法轮功

1
@ সিরোস্যান্টিলি 六四 事件 法轮功 纳米比亚 威 视: আমি যদি হেক্স সম্পাদকে সূচিটি পরিবর্তন করে এটি 20 বাইট চেকসাম আপডেট করি তবে অন্যান্য বস্তুতে সঞ্চিত শ 1 আপডেট করার জন্য কোন আদেশ আছে? (গিট অভিযোগ করে sha1 স্বাক্ষরের স্বাক্ষর দূষিত) । এছাড়াও পুশ অনুরোধগুলি যখন পাঠানো হয় তখন সূচক ডেটা সম্পূর্ণ আলাদাভাবে সংরক্ষণ করা হয়।
ব্যবহারকারী 2284570

1
@CiroSantilli 六四 事件 法轮功 纳米比亚 威 视: সুরক্ষা উদ্দেশ্যে। গিটার ডাটাবেস / অবজেক্টে প্রয়োগ করা ভালভাবে জেনে নিন রাস্টার ইমেজ ফাইল আক্রমণগুলি for (অবশ্যই আমি জানি বেশিরভাগ বাস্তবায়ন সম্প্রতি সেই দৃষ্টিকোণের যত্ন নিয়েছে, তবে সম্ভবত সমস্তটি নয়)  তাই আমি বিশেষত বাইনারি ডেটা স্ট্রাকচারের সন্ধান করছি যা একটি অ্যারের দৈর্ঘ্য বলে। (পাঠ্য বাফার সম্পর্কে এটি মনে হচ্ছে নাল বাতিল হওয়া সারিগুলির সংখ্যা বলার আদর্শ)
ব্যবহারকারী 2284570

1
সম্পর্কিত git add, আপনার প্রতি TODO: আপনি সঠিক। যদি আপনার কোনও নির্দিষ্ট পথে উচ্চ-স্তরের সূচী এন্ট্রি (সংঘাত) থাকে, আপনি যখন git addসেই পথটি করেন, তখন সমস্ত উচ্চ-স্তরের সূচী এন্ট্রি সরিয়ে ফেলা হবে এবং কার্যকরী ডিরেক্টরি কপিটি পর্যায়ে যুক্ত করা হবে 0। (সংঘাত নিরসন)।
এডওয়ার্ড থমসন

11

গিট সূচকটি আপনার কার্যনির্বাহী ডিরেক্টরি এবং আপনার ভাণ্ডারগুলির মধ্যে একটি মঞ্চ অঞ্চল। আপনি একসাথে প্রতিশ্রুতিবদ্ধ করতে চান এমন একটি সেট সেট আপ করতে আপনি সূচকটি ব্যবহার করতে পারেন। আপনি যখন কোন প্রতিশ্রুতি তৈরি করেন, তখন যা প্রতিশ্রুতিবদ্ধ তা হ'ল বর্তমানে এই সূচীতে যা রয়েছে, এটি আপনার কার্যনির্বাহী ডিরেক্টরিতে নয়।

সূচকের ভিতরে কী রয়েছে তা দেখতে, কমান্ডটি জারি করুন:

git status

যখন আপনি গিট স্ট্যাটাসটি চালান, আপনি দেখতে পাবেন কোন ফাইলগুলি মঞ্চস্থ হয় (বর্তমানে আপনার সূচীতে রয়েছে), যা পরিবর্তিত তবে এখনও মঞ্চায়িত নয় এবং কোনটি সম্পূর্ণরূপে অনতিযুক্ত রয়েছে।

আপনি পড়তে পারেন এই । একটি গুগল অনুসন্ধান অনেকগুলি লিঙ্ক ছুঁড়ে ফেলেছে, যা মোটামুটি স্বয়ংসম্পূর্ণ হওয়া উচিত।


7
git statusসূচী থেকে সমস্ত ফাইল তালিকাভুক্ত করে না। এটি কেবলমাত্র সেই ফাইলগুলি তালিকাভুক্ত করে যা সূচক এবং কার্যনির্বাহী ডিরেক্টরিতে পৃথক হয়। সূচীতে সমস্ত ফাইল দেখতে আপনার ব্যবহার করা দরকার git ls-files
আকাশ অগ্রবাল

1
@AkashAgrawal, git status না থাকুক না কেন সূচক ও workdir মধ্যে পার্থক্য নির্বিশেষে সত্য তালিকা সূচক ফাইলের মধ্যে।
একিউম্যানাস

3
হ্যাঁ, এটি সূচী ফাইলগুলির কয়েকটি তালিকাভুক্ত করে তবে এটি সূচকের অভ্যন্তরে থাকা সমস্ত কিছুই আপনাকে প্রদর্শন করে না, যা তার উত্তরে তার বক্তব্যটি বলে। এটি বলার মতো যে একটি বাক্সের ভিতরে 2 টি সবুজ বল এবং 3 টি লাল বল রয়েছে। বাক্সের ভিতরে কী দেখতে 2 টি সবুজ বলটি টানুন। আকাশ যা বলেছেন তা সবচেয়ে নির্ভুল, সূচকের সমস্ত ফাইল দেখতে, গিট এলএস-ফাইল ব্যবহার করুন।
dave4jr

3
প্রকৃতপক্ষে. git statusসূচকগুলিতে থাকা ফাইলগুলির তালিকা করে, হ্যাঁ, তবে সূচীতে সমস্ত ফাইল তালিকাভুক্ত নয়git status আসলে কীভাবে কাজ করে তা ব্যাখ্যা করা কিছু প্রশ্নের উপকারী উত্তর হবে যদিও এটি সম্ভবত এটি নয়।
এডওয়ার্ড থমসন

1
git statusকাজের গাছের স্থিতি দেখায় (কার্যকারী গাছ এবং সূচকের মধ্যে পার্থক্য)। এটি আসলে সূচকটি দেখায় না। git-scm.com/docs/git-status
উইসবাকী

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/index) প্রতিটি পথের নামের তালিকা এবং একটি ব্লব অবজেক্টের এসএএএএ 1 সহ একটি সাজানো তালিকা থাকে;

git ls-filesআপনাকে সূচকের বিষয়বস্তু প্রদর্শন করতে পারে। দয়া করে মনে রাখবেন যে শব্দগুলি index, stageএবং cacheগীততে একই জিনিস: সেগুলি আন্তঃচেঞ্জীয়ভাবে ব্যবহৃত হয়।

এখানে চিত্র বর্ণনা লিখুন

গিট সূচক, বা গিট ক্যাশে 3 টি গুরুত্বপূর্ণ বৈশিষ্ট্য রয়েছে:

  1. সূচীতে একটি একক (অনন্যভাবে নির্ধারিত) ট্রি অবজেক্ট তৈরি করতে প্রয়োজনীয় সমস্ত তথ্য রয়েছে।
  2. সূচকটি যে গাছের বস্তুটিকে এটি নির্ধারণ করে এবং কার্যকারী গাছের মধ্যে দ্রুত তুলনা সক্ষম করে।
  3. এটি দক্ষতার সাথে বিভিন্ন গাছের বস্তুর মধ্যে মার্জ সংঘাত সম্পর্কিত তথ্যকে প্রতিনিধিত্ব করতে পারে, যার মধ্যে প্রতিটি পথের নাম জড়িত গাছ সম্পর্কে পর্যাপ্ত তথ্যের সাথে যুক্ত হতে দেয় যা আপনি তাদের মধ্যে একটি ত্রি-মুখী মার্জ তৈরি করতে পারেন।

সূত্র :

  1. https://mincong.io/2018/04/28/git-index/
  2. https://medium.com/hackernoon/understanding-git-index-4821a0765cf
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.