এই চমত্কার টুল জানুন এবং বুঝতে.
TL; DR: GIT কি এবং কেন আপনি এটি ব্যবহার করতে শিখবেন?
আমি বিভিন্ন শ্রোতাদের কাছে পাঁচটি স্তরে জিআইটি ব্যাখ্যা করব।
অনেক জুনিয়র ডেভেলপার আমাকে জিজ্ঞেস করছে তাদের ক্যারিয়ার শুরু করার জন্য কোন ভাষা বা অভিনব ফ্রেমওয়ার্ক ভালো।
আমার উত্তর সবসময় একই:
ভাষা এবং কাঠামো আসে এবং যায়। ইংরেজি অধ্যয়ন করুন এবং জিআইটি অধ্যয়ন করুন।
জিআইটি একটি ম্যাজিক নোটবুকের মতো যেখানে আপনি আপনার কম্পিউটার প্রকল্পগুলিতে করা সমস্ত পরিবর্তন লিখতে পারেন।
আপনি কি জানেন যখন আপনি একটি ছবি আঁকেন, এবং আপনি এটি মুছে ফেলতে বা আগের মতো করতে পারবেন না?
কখনও কখনও, যখন আমরা বড় প্রকল্পগুলিতে কাজ করি, তখন আমরা ফিরে যেতে চাই এবং আমাদের ছবির পুরানো সংস্করণগুলি দেখতে চাই।
আপনি আপনার ছবির বিভিন্ন সংস্করণ রাখতে পারেন এবং ফিরে যান এবং আপনি যদি চান সেগুলি দেখতে পারেন।
আপনি পরিবর্তনের সাথে বিভ্রান্তির সম্মুখীন না হয়ে আপনার বন্ধুদের সাথে একই ছবিতে আঁকতে পারেন।
এটি আপনার কাজের জন্য একটি টাইম ক্যাপসুলের মতো।
GIT হল একটি টুল যা আপনার কম্পিউটার ফাইলের পরিবর্তনগুলি ট্র্যাক রাখার জন্য, বিশেষ করে যখন একটি প্রকল্পে অন্য লোকেদের সাথে কাজ করে।
দুর্ঘটনাক্রমে একে অপরের পরিবর্তনগুলি ওভাররাইট না করে বন্ধুরা একই সময়ে একই ফাইলগুলিতে কাজ করতে পারে।
জিআইটি আপনাকে আপনার কাজের বিভিন্ন সংস্করণ সংরক্ষণ করার অনুমতি দেয়, যাতে আপনার প্রয়োজন হলে আপনি আগের সংস্করণে ফিরে যেতে পারেন।
জিআইটি একটি বিতরণকৃত সংস্করণ নিয়ন্ত্রণ ব্যবস্থা।
এটি ডেভেলপারদের একে অপরের পরিবর্তনে হস্তক্ষেপ না করে একই কোডবেসে একই সাথে কাজ করতে দেয়।
এটি ফাইলের পরিবর্তন ট্র্যাক করতে একটি অনন্য অ্যালগরিদম ব্যবহার করে।
GIT কোডবেসে করা সমস্ত পরিবর্তনের ইতিহাস বজায় রাখে।
স্বাধীনভাবে কাজ করার ক্ষমতা বজায় রেখে বিকাশকারীরা একই প্রকল্পে সহযোগিতা করতে পারে।
আপনি যদি আপনার কাজের একটি পুরানো সংস্করণে ফিরে যেতে চান, তাহলে এই টুলটি আপনার লেখা কোডের সাহায্যে এটি করা সহজ করে তোলে।
সফ্টওয়্যার বিকাশকারীরা ব্যাপকভাবে জিআইটি ব্যবহার করে এবং এটিকে একটি শিল্প মান বিবেচনা করে।
এটি ওপেন সোর্স যার মানে যে কেউ এটি বিনামূল্যে ব্যবহার করতে পারে।
GIT ডেভেলপারদের সময়ের সাথে সোর্স কোডে করা পরিবর্তনগুলি ট্র্যাক করতে দেয়।
এই টুলটি একই কোডবেসে একাধিক ডেভেলপারের একযোগে সহযোগিতার জন্য অনুমতি দেয়, পাশাপাশি প্রতিটি পৃথক বিকাশকারীর দ্বারা করা সমস্ত পরিবর্তনের একটি ব্যাপক রেকর্ড বজায় রাখে।
GIT সহজে সহযোগিতা, পরিবর্তনের রোলব্যাক, এবং কোডের বিভিন্ন সংস্করণ পরিচালনার অনুমতি দেয়।
GIT-এর কিছু মূল বৈশিষ্ট্যগুলির মধ্যে রয়েছে শাখা তৈরি এবং তাদের একত্রিত করার ক্ষমতা, কোডবেসে করা পরিবর্তনের ইতিহাস দেখা এবং দ্বন্দ্বগুলি পরিচালনা করা।
একই কোডে একাধিক ব্যক্তি কাজ করলে বিরোধ দেখা দেয়।
GIT হল একটি বিতরণকৃত সংস্করণ নিয়ন্ত্রণ ব্যবস্থা যা সফ্টওয়্যার বিকাশকারীদের তাদের সোর্স কোডে করা পরিবর্তনগুলি পরিচালনা এবং ট্র্যাক করতে দেয়।
এটি একটি ডেটা মডেলের উপর ভিত্তি করে তৈরি করা হয়েছে যা একটি নির্দেশিত অ্যাসাইক্লিক গ্রাফ নিয়ে গঠিত, যেখানে প্রতিটি কমিট নির্দিষ্ট সময়ে কোডবেসের একটি স্ন্যাপশট উপস্থাপন করে।
জিআইটি একটি কোডবেসে একাধিক শাখার অস্তিত্বের অনুমতি দেয়, সহজে এক শাখা থেকে অন্য শাখায় পরিবর্তনগুলিকে একত্রিত করার ক্ষমতা সহ।
এটি একটি ত্রি-মুখী মার্জ অ্যালগরিদম ব্যবহার করে, যা এটিকে একাধিক শাখার পরিবর্তনগুলিকে একত্রিত করার সময় উদ্ভূত দ্বন্দ্বগুলিকে দক্ষতার সাথে পরিচালনা করতে দেয়৷
GIT কমিট করার আগে স্টেজিং পরিবর্তনের অনুমতি দেয়।
আপনি কাজগুলি স্বয়ংক্রিয় করতে এবং GIT LFS ব্যবহার করে বড় বাইনারি ফাইলগুলি পরিচালনা করতে হুক ব্যবহার করতে পারেন।
GIT-এর সাহায্যে অসংখ্য স্থানীয় এবং দূরবর্তী সংগ্রহস্থলের মধ্যে উৎপন্ন এবং স্থানান্তর করা সম্ভব।
GIT এর একটি শক্তিশালী প্লাগইন ইকোসিস্টেম এবং বিভিন্ন তৃতীয় পক্ষের টুল রয়েছে।
কিছু টুল হল GIT GUI ক্লায়েন্ট, GIT হোস্টিং প্ল্যাটফর্ম এবং GIT ওয়ার্কফ্লো অটোমেশন টুল, যা দলগুলিকে তাদের প্রয়োজন অনুসারে বিভিন্ন উপায়ে GIT ব্যবহার করতে সক্ষম করে।
GIT দ্বারা ব্যবহৃত থ্রি-ওয়ে মার্জ অ্যালগরিদম একটি ফাইলের সাধারণ পূর্বপুরুষ সংস্করণকে বর্তমান শাখার সংস্করণ এবং যে শাখায় একত্রিত করা হচ্ছে তার সংস্করণের সাথে তুলনা করে।
এটি GIT-কে বিভিন্ন শাখায় করা পরিবর্তনগুলিকে একত্রিত করার সময় উদ্ভূত দ্বন্দ্বগুলি সনাক্ত করতে এবং পরিচালনা করতে দেয়।
ত্রি-মুখী একত্রীকরণ প্রক্রিয়াটি নিম্নরূপ কাজ করে:
GIT প্রথমে একত্রিত করা ফাইলের সাধারণ পূর্বপুরুষ সংস্করণ সনাক্ত করে। এটি বর্তমান এবং টার্গেট শাখায় কোনো পরিবর্তন করার আগে বিদ্যমান ফাইলের সংস্করণ।
GIT বর্তমান শাখার সংস্করণের সাথে ফাইলের পূর্বপুরুষ সংস্করণের তুলনা করে। এটি তখন ফাইলের একটি বিশেষ "বর্তমান" সংস্করণে বর্তমান শাখায় করা সমস্ত পরিবর্তন রেকর্ড করে।
GIT ফাইলের পূর্বপুরুষ সংস্করণটিকে লক্ষ্য শাখার সংস্করণের সাথে তুলনা করে এবং লক্ষ্য শাখায় করা সমস্ত পরিবর্তন ফাইলের একটি বিশেষ "লক্ষ্য" সংস্করণে রেকর্ড করে।
GIT ফাইলটির সাধারণ পূর্বপুরুষ সংস্করণ নেয় এবং বর্তমান এবং লক্ষ্য সংস্করণে রেকর্ড করা পরিবর্তনগুলিকে প্রয়োগ করে। যদি কোন দ্বন্দ্ব দেখা দেয় (উদাহরণস্বরূপ, যদি বর্তমান এবং টার্গেট উভয় শাখায় কোডের একই লাইন পরিবর্তন করা হয়), GIT ফাইলের চূড়ান্ত সংস্করণে এই দ্বন্দ্বগুলি চিহ্নিত করবে এবং ব্যবহারকারীকে ম্যানুয়ালি সমাধান করার জন্য অনুরোধ করবে।
এই অ্যালগরিদম ব্যবহার করে, GIT দক্ষতার সাথে মার্জ দ্বন্দ্বগুলি পরিচালনা করতে পারে এবং গ্যারান্টি দিতে পারে যে ফাইলের চূড়ান্ত সংস্করণ উভয় শাখায় করা পরিবর্তনগুলির একটি সুসংগত এবং সামঞ্জস্যপূর্ণ একীকরণ উপস্থাপন করে।