Git / গিট

গিট কি?

গিট হল একটি ডিস্ট্রিবিউটেড ভার্সন কন্ট্রোল সিস্টেম (DVCS) যা ডেভেলপারদের তাদের কোডবেসে পরিবর্তন ট্র্যাক করতে, অন্যদের সাথে সহযোগিতা করতে এবং তাদের প্রকল্পের বিভিন্ন সংস্করণ দক্ষতার সাথে পরিচালনা করতে দেয়।

কেন গিট ব্যবহার করবেন?

বিশ্বব্যাপী প্রায় 70% বিকাশকারীরা বিকাশের জন্য গিট ব্যবহার করে। গিট ব্যবহার করার কিছু বিশিষ্ট কারণ হল:

  • বিকাশকারীরা যে কোনও জায়গা থেকে একসাথে কাজ করতে পারে।
  • বিকাশকারীরা সম্পূর্ণ ইতিহাস দেখতে পারে এবং প্রকল্পের পূর্ববর্তী এবং নতুন পরিবর্তনগুলি তুলনা করতে পারে।
  • বিকাশকারীরা একটি প্রকল্পের পূর্ববর্তী সংস্করণগুলিতে ফিরে যেতে পারে।

গিট এর বৈশিষ্ট্য

গিটের কিছু উল্লেখযোগ্য বৈশিষ্ট্য নিম্নরূপ:

ওপেন সোর্স

গিট একটি ওপেন সোর্স টুল। এটি GPL (জেনারেল পাবলিক লাইসেন্স) লাইসেন্সের অধীনে প্রকাশিত হয়।

স্ক্যালেবেল

Git স্কেলযোগ্য, যার মানে যখন ব্যবহারকারীর সংখ্যা বৃদ্ধি পায়, Git সহজেই এই ধরনের পরিস্থিতি পরিচালনা করতে পারে।

ডিস্ট্রিবিউটেড

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

সিকিউরিটি

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

স্পিড

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

সাপোর্টস নন-লাইনার ডেভেলপমেন্ট

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

ব্রাঞ্চিং এবং মারজিং

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

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

ডেটা এস্যুরেন্স

গিট ডেটা মডেল আমাদের প্রকল্পের প্রতিটি ইউনিটের ক্রিপ্টোগ্রাফিক অখণ্ডতা নিশ্চিত করে। এটি একটি SHA অ্যালগরিদমের মাধ্যমে প্রতিটি কমিটের জন্য একটি অনন্য কমিট আইডি প্রদান করে। আমরা কমিট আইডি দ্বারা প্রতিশ্রুতি পুনরুদ্ধার এবং আপডেট করতে পারি। বেশিরভাগ কেন্দ্রীভূত সংস্করণ নিয়ন্ত্রণ ব্যবস্থা ডিফল্টরূপে এই ধরনের অখণ্ডতা প্রদান করে না।