যে কেউ কখনো project_final.docx, project_final_v2.docx, আর project_final_v2_ACTUAL.docx নামের file রেখেছে সে ইতিমধ্যে ঠিক সেই সমস্যা অনুভব করেছে যা version control সমাধান করে — কিছু না হারিয়ে, আর কোন কপিটা current তা অনুমান না করে, সময়ের সাথে একটা project কীভাবে বদলায় তা track করা।
| Version control ছাড়া | Version control সহ |
|---|---|
| একটা file-এর একাধিক কপি, হাতে rename করা | একটা file, এর প্রতিটা পরিবর্তনের একটা পূর্ণ history |
| কে কী বদলেছে, বা কেন তার কোনো রেকর্ড নেই | প্রতিটা পরিবর্তন একজন author, একটা timestamp, আর একটা message সহ log করা |
| একটা ভুল undo করা মানে একটা পুরনো কপি খুঁজে বের করা, যদি একটা এখনো থাকে | একটা ভুল undo করা মানে একটা আগের version checkout করা — সবসময় সম্ভব |
| দুজন একই file edit করলে একে অপরেরটা overwrite হয় | একাধিক মানুষের পরিবর্তন একসাথে merge হয়, conflict স্পষ্টভাবে চিহ্নিত সহ |
প্রথম দিকের tool (SVN আর CVS-এর মতো) একটা central কপির বিরুদ্ধে সবাই কাজ করে পরিবর্তন track করত — প্রতিটা action-এর জন্য network দরকার হতো। Git, 2005-এ Linux kernel-এর source code manage করতে Linus Torvalds তৈরি করেছিলেন, এর বদলে distributed: প্রতিটা developer-এর নিজের machine-এ project-এর পূর্ণ history-র একটা সম্পূর্ণ কপি আছে, আর অন্যদের সাথে আসলে পরিবর্তন শেয়ার করতে শুধু network দরকার।
এই দুটো নাম বদলে বদলে ব্যবহার হয়, কিন্তু এরা ভিন্ন জিনিস। Git version control tool নিজেই — এটা সম্পূর্ণভাবে একটা local machine-এ চলে আর built in "internet"-এর কোনো ধারণা নেই। GitHub একটা website যা Git repository অনলাইনে host করে আর এর উপরে collaboration feature (pull request, issue, code review) যোগ করে — কয়েক lesson পরে শুরু করে কভার করা। GitLab আর Bitbucket, এই কোর্সের শেষ lesson-এ কভার করা, ভিন্ন company নিয়ে GitHub-এর একই কাজ করে।
এই সাইটের বাকি প্রতিটা কোর্স ধরে নেয় একটা project শেষ পর্যন্ত deploy, share, বা অন্য কারো সাথে কাজ করা হবে — Git-ই সেই tool যা এটা chaos ছাড়াই সম্ভব করে। এটা, বাস্তবে, একটা coding interview বা একটা চাকরির প্রথম দিনের setup ইতিমধ্যে একজন developer জানে ধরে নেওয়া প্রথম জিনিসগুলোর একটাও।
এই কোর্সে "অন্য version control software" মানে কী
এই কোর্স Git আর GitHub সত্যিকারের গভীরতায় কভার করে, তারপর GitHub-কে অন্য hosting platform (GitLab, Bitbucket) আর সম্পূর্ণ অন্য version control system-এর (Mercurial, Subversion, Perforce) সাথে তুলনা করা একটা lesson দিয়ে বন্ধ হয় — আজ Git প্রবলভাবে industry standard, কিন্তু আর কী আছে আর কেন তা জানার যোগ্য।