যে কেউ কখনো একটা file report_final.docx নামে সেভ করেছে, তারপর report_final_v2.docx, তারপর report_final_v2_REALLY_FINAL.docx — সে ইতিমধ্যেই সেই সমস্যাটা অনুভব করেছে যেটার সমাধানের জন্য Git-এর অস্তিত্ব।
হাতে করে কপির নাম বদলালে আসল কোনো history পাওয়া যায় না। দুটো ভার্সনের মধ্যে আসলে কী বদলেছে, কেন বদলেছে তা সহজে দেখা যায় না, আর পরের সবকিছু হারানো ছাড়া শুধু একটা নির্দিষ্ট বদল পূর্বাবস্থায় ফেরানো যায় না।
Git একটা version control system — এমন একটা টুল যা আপনি বললেই আপনার পুরো project-এর একটা স্ন্যাপশট নেয়, আর প্রতিটা স্ন্যাপশট চিরকাল মনে রাখে। প্রতিটা স্ন্যাপশটকে বলা হয় একটা commit। আপনি project-এর history থেকে যেকোনো commit দেখতে পারেন, দুটো commit তুলনা করতে পারেন, বা আগের কোনোটায় ফিরে যেতে পারেন।
একটা repository (বা "repo") হলো একটা project folder যা Git ট্র্যাক করছে। staging area হলো যেখানে আপনি ঠিক করেন কোন বদলানো file গুলো পরের স্ন্যাপশটে যাবে — একসাথে সবকিছু commit করতে হয় না। একটা commit হলো সেই স্ন্যাপশট, কী বদলেছে তার একটা ছোট বার্তা সহ চিরস্থায়ীভাবে সেভ করা।
git init # start tracking this folder
git status # what's changed since the last commit?
git add . # stage every changed file
git commit -m "message" # save a snapshot with a message
git log # see the history of commitsএই কাজের টুল আপনার কাছে আগে থেকেই আছে
এগুলোর প্রতিটাই টার্মিনালে টাইপ করা হয় — এজন্যই কমান্ড লাইন বেসিক্স এই পাঠের আগে এসেছে, পরে নয়।
Git নিজে পুরোপুরি আপনার নিজের কম্পিউটারে থাকে আর কোনো ইন্টারনেট সংযোগ লাগে না — এটা শুধু স্থানীয়ভাবে history ট্র্যাক করে। এটা GitHub-এর মতো একই জিনিস না, যা Git-কে কেন্দ্র করে বানানো একটা আলাদা ওয়েবসাইট, আর পরের পাঠ ঠিক এটা নিয়েই।