গিট যতটা বিবর্তিত হয়েছিল তেমন ডিজাইন করা হয়নি ।
নিজে দেখে নিন অফিসিয়াল গিট সংগ্রহস্থলটিকে ক্লোন করুন , এটিকে খুলুন gitk
(বা আপনার প্রিয় গ্রাফিকাল গিট লগ ভিউয়ার) এবং এর প্রাথমিক সংস্করণগুলি দেখুন।
আপনি দেখতে পাবেন এটির মূলত কেবলমাত্র মূল কার্যকারিতা ছিল (বস্তুর ডাটাবেস এবং সূচক)। বাকি সব হাতে হাতেই করা হয়েছিল । তবে এই ছোট কোরটি শেল স্ক্রিপ্টিংয়ের মাধ্যমে সহজেই স্বয়ংক্রিয় করার জন্য ডিজাইন করা হয়েছিল। গিটের প্রাথমিক ব্যবহারকারীরা সাধারণ কাজগুলি স্বয়ংক্রিয় করতে নিজের শেল স্ক্রিপ্টগুলি লিখেছিলেন; অল্প অল্প করেই, এই স্ক্রিপ্টগুলি গিট বিতরণে অন্তর্ভুক্ত করা হয়েছিল (প্রাথমিক উদাহরণ 839a7a0 দেখুন )। প্রতিবার যখন কোনও নতুন প্রয়োজন ছিল, স্ক্রিপ্টগুলি এটির জন্য মানিয়ে নেওয়া হয়েছিল। অনেক পরে, এই স্ক্রিপ্টগুলির বেশ কয়েকটি সিতে আবার লেখা হবে
একটি পরিষ্কার, অরথোগোনাল কোর (যা আপনার প্রয়োজনের পরে সরাসরি ব্যবহার করতে পারেন) এর মিশ্রণ, একটি উপরের স্তর সহ যা এটির উপর জৈবিকভাবে বেড়েছে, এটিই গিটকে তার শক্তি দেয়। অবশ্যই, এটি এটিকেই বিপুল পরিমাণে বিজোড়-নামক কমান্ড এবং বিকল্পগুলি দেয়।
সংক্ষেপণ, গ্রাফগুলি, সংশোধন সংখ্যাগুলি থেকে মুক্তি পেয়ে শাখা প্রশাখায় জোর দেওয়া, স্ট্যাশিং, রিমোটগুলি ... এগুলি কোথা থেকে এসেছে?
প্রথমদিকে সেখানে অনেক কিছুই ছিল না।
প্রতিটি বস্তু স্বতন্ত্রভাবে সংকুচিত ছিল এবং ডুপ্লিকেটগুলি তাদের নামকরণ দ্বারা এড়ানো হয়েছিল, "প্যাক" ফাইলগুলি যা আমরা গিটে দেখার জন্য ব্যবহৃত হয় উচ্চ সংকোচনের জন্য দায়ী। শুরুতে দর্শন ছিল "ডিস্ক স্পেস সস্তা"।
যদি "গ্রাফিকগুলি" দ্বারা আপনার বোঝানো গ্রাফিকাল দর্শকদের পছন্দ হয় তবে gitk
তারা পরে উপস্থিত হয়েছিল (এএফএআইকে, প্রথমটি ছিল gitk
)। আফাইক, বিটকিপারেরও গ্রাফিকাল ইতিহাসের দর্শক ছিল।
সংস্করণ সংখ্যাগুলি থেকে মুক্তি পাওয়া, বস্তুগুলি সংরক্ষণ করার জন্য গিটারের একটি বিষয়বস্তু সম্বোধিত ফাইল সিস্টেম ব্যবহার করার মূল ধারণাটি বেশিরভাগ মনোোটোন থেকেই এসেছে । এই সময়, একঘেয়ে মন্থর ছিল; যদি এটি না হয় তবে লিনাস গিট তৈরির পরিবর্তে এটি ব্যবহার করতে পারে।
প্রতিটি ক্লোন পৃথক শাখা হিসাবে কাজ করে, তাই বিতরণ করা সংস্করণ নিয়ন্ত্রণ সিস্টেমের উপর ব্রাঞ্চকে জোর দেওয়া কিছুটা অপ্রয়োজনীয়।
স্ট্যাশিং ( git stash
) হ'ল, আইআইআরসি, বেশ সাম্প্রতিক। রিফ্লাগগুলি, যা এটি ব্যবহার করে, শুরুতে সেখানে ছিল না।
এমনকি রিমোটগুলি প্রাথমিকভাবে সেখানে ছিল না। মূলত, আপনি হাত দ্বারা অবজেক্টগুলি অনুলিপি করেছেন rsync
।
একে একে, এই বৈশিষ্ট্যগুলির প্রত্যেকটি কারও দ্বারা যুক্ত করা হয়েছিল। তাদের সবগুলিই নয় - সম্ভবত তাদের বেশিরভাগই নয় - লিনাস লিখেছিলেন। প্রতিবার যে কেউ গিটটি পূরণ করে না এমন কোনও প্রয়োজনীয়তা অনুভব করে, কেউ গিটের মূল "নদীর গভীরতানির্ণয়" স্তরটির উপরে একটি নতুন বৈশিষ্ট্য তৈরি করতে পারে এবং এটি অন্তর্ভুক্তির জন্য প্রস্তাব করতে পারে। যদি এটি ভাল হয় তবে সম্ভবত এটি গ্রহণ করা হবে, গিটের ইউটিলিটি (এবং এর কমান্ড লাইনের জটিলতা) আরও বাড়িয়ে তোলা হবে।