GitHub কী? নন-ডেভেলপারদের জন্য ভার্সন কন্ট্রোল
GitHub একটি ওয়েবসাইট, যেখানে সফটওয়্যার প্রজেক্টের কোড তার সম্পূর্ণ ইতিহাসসহ রাখা হয়, যাতে আপনি প্রতিটি পরিবর্তন দেখতে পারেন, ভুল ফেরাতে পারেন এবং অন্য মানুষের সঙ্গে একই প্রজেক্টে কাজ করতে পারেন। এটি তৈরি হয়েছে Git-এর ওপর। Git একটি বিনামূল্যের সফটওয়্যার, যা সময়ের সঙ্গে প্রজেক্টের ফাইলের স্ন্যাপশট রেকর্ড করে। ইতিহাস রাখে Git; GitHub হলো সেই অনলাইন ঘর, যেখানে সেই ইতিহাস শেয়ার, ব্যাকআপ ও আলোচনা করা হয়।
AI দিয়ে বানালে GitHub মূলত দুটি কাজে লাগে: কোডের একটি কপি নিজের হাতে রাখা, যে টুলে বানিয়েছেন তার বাইরে, এবং একজন ডেভেলপারের হাতে তুলে দেওয়া এমন ফরম্যাটে, যেটা তারা আগে থেকেই ব্যবহার করেন।
AI দিয়ে বানানোর ক্ষেত্রে এটি কেন গুরুত্বপূর্ণ
একটি AI অ্যাপ বিল্ডার দ্রুত অনেক কোড লেখে ও বদলায়, আর প্রতিটি পরিবর্তনই উন্নতি নয়। ভার্সন কন্ট্রোল সেটাকে নিরাপদ রাখে।
- নিশ্চিন্তে ফেরানো। প্রতিটি সংরক্ষিত পরিবর্তন একটি স্ন্যাপশট। AI কিছু ভাঙলে আপনি শেষ ভালো অবস্থায় ফিরে যেতে পারেন।
- মালিকানা। আপনার নিজের GitHub অ্যাকাউন্টের কোড আপনারই থাকে, টুল বদলালে, পেমেন্ট বন্ধ করলে বা দ্বিতীয় মতামত নিতে চাইলেও।
- ডেভেলপারের সঙ্গে কাজ। প্রায় প্রতিটি ডেভেলপার প্রতিদিন Git ব্যবহার করেন। একটি রিপোজিটরি থাকলে তারা AI-এর লেখা কোড রিভিউ করতে, ঠিক করতে এবং পরিবর্তন ফেরত পাঠাতে পারেন।
- অন্য জায়গায় ডিপ্লয়। অনেক হোস্টিং প্ল্যাটফর্ম সরাসরি GitHub রিপোজিটরি থেকে ডিপ্লয় করতে পারে।
একটি দৈনন্দিন উপমা: ট্র্যাক চেঞ্জেস ও একটি শেয়ার্ড ড্রাইভ
ভাবুন ট্র্যাক চেঞ্জেস চালু করা একটি ডকুমেন্ট, যেটি একটি শেয়ার্ড ড্রাইভে রাখা আছে।
- Git হলো ট্র্যাক চেঞ্জেস: প্রতিটি সম্পাদনা রেকর্ড হয়, কে, কখন ও কেন করেছে তাসহ, এবং আপনি যেকোনো সংস্করণে ফিরে যেতে পারেন।
- GitHub হলো শেয়ার্ড ড্রাইভ: ডকুমেন্টটি অনলাইনে থাকে, অন্যরা কপি নিতে পারে, আর মন্তব্য করা ও অনুমোদন দেওয়ার জায়গা থাকে।
- একটি ব্রাঞ্চ যেন "খসড়া — নতুন মূল্য বিভাগ" নামে একটি কপি সেভ করা, যাতে সবাই যে সংস্করণের ওপর নির্ভর করে তাতে হাত না দিয়েই পরীক্ষা করা যায়। পরীক্ষা সফল হলে সেটি মূল সংস্করণে মার্জ করেন।
ডকুমেন্টের সঙ্গে পার্থক্য হলো আকারে। একটি অ্যাপে শতাধিক ফাইল থাকে, আর Git সবগুলো একসঙ্গে ট্র্যাক করে, তাই একটি স্ন্যাপশট মানে পুরো প্রজেক্টের তখনকার অবস্থা।
যেসব Git ও GitHub শব্দ আপনি দেখবেন
| শব্দ | সহজ অর্থ |
|---|---|
| Repository (repo) | পুরো ইতিহাসসহ একটি প্রজেক্ট ফোল্ডার |
| Commit | পরিবর্তনের একটি সংরক্ষিত স্ন্যাপশট, সঙ্গে একটি ছোট বার্তা |
| Branch | আলাদা একটি কাজের ধারা, যাতে পরীক্ষা মূল সংস্করণে প্রভাব না ফেলে |
| main | প্রধান ব্রাঞ্চের সাধারণ নাম, যে সংস্করণটি লাইভ যায় |
| Merge | একটি ব্রাঞ্চের পরিবর্তন অন্য ব্রাঞ্চে নিয়ে আসা |
| Merge conflict | দুটি পরিবর্তন একই লাইন ছুঁয়েছে; কোনটি রাখবেন, কাউকে বেছে নিতে হয় |
| Clone | ইতিহাসসহ একটি রিপোজিটরির পূর্ণ কপি ডাউনলোড করা |
| Push / pull | আপনার কমিট GitHub-এ পাঠানো / অন্যদের কমিট নামিয়ে আনা |
| Pull request (PR) | GitHub-এর একটি পাতা, যা একটি ব্রাঞ্চ মার্জের প্রস্তাব দেয় এবং মানুষ সেখানে পরিবর্তন রিভিউ ও আলোচনা করে |
| Fork | GitHub-এ অন্য কারও রিপোজিটরির নিজের কপি |
| Issue | রিপোজিটরির সঙ্গে যুক্ত একটি টু-ডু বা বাগ রিপোর্ট |
.gitignore | যে ফাইলগুলো Git কখনো রেকর্ড করবে না তার তালিকা, যেমন .env সিক্রেট ও ডাউনলোড করা ডিপেন্ডেন্সি |
| GitHub Actions | GitHub-এ চলা অটোমেশন, যেমন প্রতিটি pull request-এ টেস্ট চালানো |
দুটি বিষয়ে জোর দেওয়া দরকার। প্রথমত, Git-এর ইতিহাস ডিজাইন অনুযায়ী স্থায়ী: কোনো পাসওয়ার্ড কমিট ও পুশ হয়ে গেলে পরে আরেকটি কমিটে সেটি মুছলেও ইতিহাস থেকে যায় না। দ্বিতীয়ত, একটি কমিট ততটুকুই কাজের, যতটুকু তার বার্তা। "দুজন একসঙ্গে বুক করলে বুকিং দুইবার গোনা ঠিক করা হলো" পরে কাজে লাগে; "update" লেখা কিছু বোঝায় না।
একটি বাস্তব উদাহরণ: AI দিয়ে বানানো অ্যাপ একজন ফ্রিল্যান্সারের হাতে তুলে দেওয়া
AI অ্যাপ বিল্ডার দিয়ে আপনি একটি ক্লায়েন্ট পোর্টাল বানিয়েছেন। সেটি কাজ করছে, কিন্তু আপনি চান একজন ফ্রিল্যান্স ডেভেলপার আপনার অ্যাকাউন্টিং সফটওয়্যারের সঙ্গে একটি জটিল ইন্টিগ্রেশন যোগ করুক।
- প্রজেক্টটিকে একটি নতুন প্রাইভেট GitHub রিপোজিটরির সঙ্গে যুক্ত করে পুশ করুন। রিপোজিটরিতে এখন কোড ও তার ইতিহাস আছে।
- কী আছে দেখুন। GitHub-এ রিপোজিটরিটি খুলুন। সেখানে কোনো
.envফাইল বা কোডে কোনো API কী থাকা উচিত নয়। সিক্রেট থাকবে আপনার প্ল্যাটফর্মের সেটিংসে, এবং প্রয়োজন হলে আলাদাভাবে ফ্রিল্যান্সারের সঙ্গে শেয়ার করবেন; দেখুন environment variables ও secrets। - ফ্রিল্যান্সারকে শুধু ওই রিপোজিটরিতে কোলাবরেটর হিসেবে আমন্ত্রণ জানান।
- তারা একটি ব্রাঞ্চে কাজ করেন, যার নাম হতে পারে
accounting-sync, কাজের সঙ্গে সঙ্গে কমিট করেন, এবং শেষ হলে একটি pull request খোলেন। - আপনি pull request রিভিউ করেন। কোড না পড়লেও আপনি বিবরণ পড়তে পারেন, কোন ফাইল বদলেছে দেখতে পারেন এবং মন্তব্যে প্রশ্ন করতে পারেন।
- খুশি হলে মার্জ করুন, তারপর আপনার বিল্ডারে pull করে পরিবর্তনগুলো নিয়ে আসুন, যাতে আপনি ও AI নতুন সংস্করণ থেকে এগোতে পারেন।
এই পথে আপনি ঠিক দেখতে পান কী বদলেছে এবং দরকার হলে তা ফেরাতে পারেন। এক কাজের প্রবাহে ভার্সন কন্ট্রোলের মূল সুবিধা এটাই। আপনি আদৌ ডেভেলপার আনবেন কি না ভাবলে দেখুন ডেভেলপার নিয়োগ বনাম AI দিয়ে বানানো।
সাধারণ ভুল ও ভুল ধারণা
- "GitHub আর Git একই জিনিস।" Git, GitHub ছাড়াও কাজ করে; GitLab ও Bitbucket-এর মতো বিকল্পগুলোও Git রিপোজিটরি হোস্ট করে।
- "GitHub আমার অ্যাপ চালাবে।" GitHub কোড সংরক্ষণ করে। মানুষের জন্য অ্যাপ চালানো হলো ওয়েব হোস্টিং, একটি আলাদা সেবা (যদিও কিছু হোস্ট GitHub থেকে ডিপ্লয় করে)।
- সিক্রেট কমিট করা। সবচেয়ে ক্ষতিকর ও সবচেয়ে সাধারণ ভুল।
.envফাইলের জন্য.gitignoreব্যবহার করুন, আর যে কী কখনো পুশ হয়েছে তা বাতিল করে নতুন কী নিন। - শুধু একটি ব্রাঞ্চ ও কোনো বার্তা নেই। একা পরীক্ষার জন্য ঠিক আছে, কিন্তু কমিটে স্পষ্ট বার্তা দিন এবং ঝুঁকিপূর্ণ কাজের জন্য ব্রাঞ্চ ব্যবহার করুন।
- একই সময়ে দুই জায়গায় সম্পাদনা। GitHub-এ ও AI বিল্ডারে একসঙ্গে কোড বদলালে, মাঝে পুল না করে, কনফ্লিক্ট তৈরি হয়। একবারে একটি জায়গায় সম্পাদনা করুন এবং জায়গা বদলানোর আগে সিঙ্ক করুন।
- প্রাইভেট রিপোজিটরিকে সবকিছুর ব্যাকআপ মনে করা। এতে কোড থাকে, আপনার ডাটাবেসের তথ্য বা আপলোড করা ফাইল নয়। সেগুলোর আলাদা ব্যাকআপ লাগে।
AI বিল্ডারকে কী চাইবেন
- "একটি
.gitignoreযোগ করো, যাতে.env, ডিপেন্ডেন্সি ফোল্ডার ও বিল্ড আউটপুট বাদ যায়।" - "একটি README লেখো, যেখানে ইনস্টল করার, কোন environment variable লাগে (শুধু নাম) এবং অ্যাপ চালানোর নিয়ম ব্যাখ্যা থাকে।"
- "একটি
.env.exampleযোগ করো, যেখানে প্রতিটি variable-এর নাম থাকবে কিন্তু আসল মান থাকবে না।" - "প্রতিটি পরিবর্তনের জন্য স্পষ্ট, বর্ণনামূলক কমিট বার্তা ব্যবহার করো।"
এই চারটি অনুরোধে এমন একটি রিপোজিটরি তৈরি হয়, যা কোনো ডেভেলপার মিনিটের মধ্যে বুঝে নিতে পারবেন। অ্যাপটি নিজের সার্ভারে নিতে চাইলে দেখুন AI দিয়ে বানানো অ্যাপ এক্সপোর্ট করে নিজে হোস্ট করার উপায়, আর আসল ব্যবহারকারীদের আগে নিরাপত্তা শক্ত করতে দেখুন AI প্রোটোটাইপ প্রোডাকশনে নেওয়ার উপায়।
GitHub ও Mythex
Mythex প্রতিটি প্ল্যানেই আপনার জন্য ইতিহাস রাখে: প্রতিটি সফল এজেন্ট টার্নের পরে এটি একটি চেকপয়েন্ট সেভ করে, যা একটি Git স্ন্যাপশট এবং যেখানে আপনি ফিরে যেতে পারেন। Pro প্ল্যানে আপনি GitHub যুক্ত করে আপনার নিজের রিপোজিটরির সঙ্গে প্রজেক্ট পুশ বা পুল করতে পারেন, অথবা পুরো প্রজেক্ট একটি archive হিসেবে ডাউনলোড করতে পারেন; এক্সপোর্টে সিক্রেট ও ইনস্টল করা ডিপেন্ডেন্সি বাদ যায়। এখানে GitHub মূলত কোড সিঙ্ক করার জন্য, Mythex-এ সাইন ইন করার জন্য নয়। দেখুন GitHub, export ও import ডকসে, আর প্রতিটি প্ল্যানে কী আছে জানতে প্রাইসিং পেজ।
প্রশ্নোত্তর
Git ও GitHub-এর পার্থক্য কী?
Git হলো একটি বিনামূল্যের সফটওয়্যার, যা যেকোনো কম্পিউটারে একটি প্রজেক্টের ফাইলের ইতিহাস রেকর্ড করে। GitHub হলো একটি ওয়েবসাইট, যার মালিক Microsoft, এবং এটি Git রিপোজিটরি অনলাইনে হোস্ট করে এবং পুল রিকোয়েস্ট, ইস্যু ও অটোমেশনের মতো সহযোগিতার টুল যোগ করে।
AI দিয়ে অ্যাপ বানাতে কি GitHub লাগে?
না। অনেক AI অ্যাপ বিল্ডার প্রোডাক্টের ভেতরেই ইতিহাস রাখে। আপনার কোডের নিজস্ব কপি চাইলে, কোনো ডেভেলপারের সঙ্গে কাজ করতে চাইলে বা অ্যাপটি অন্য কোথাও হোস্ট করার পরিকল্পনা থাকলে GitHub কাজে লাগে।
GitHub কি বিনামূল্যে?
GitHub-এর একটি বিনামূল্যের প্ল্যান আছে, যেখানে পাবলিক ও প্রাইভেট দুই ধরনের রিপোজিটরি থাকে। বেশিরভাগ ব্যক্তি ও ছোট দলের জন্য এটুকুই যথেষ্ট। পেইড প্ল্যানে দলের ব্যবস্থাপনা ও অতিরিক্ত ফিচার যোগ হয়; সর্বশেষ তথ্যের জন্য GitHub-এর প্রাইসিং পেজ দেখুন।
আমার কোড কি GitHub-এ পাবলিক?
শুধু তখনই, যদি আপনি রিপোজিটরিটি পাবলিক করেন। প্রাইভেট রিপোজিটরি শুধু আপনি ও আপনার আমন্ত্রিত মানুষরা দেখতে পারেন। তবে প্রাইভেট রিপোজিটরিতেও কখনো পাসওয়ার্ড বা API কী কমিট করবেন না।