গিট এবং সোর্সট্রি: আপনার প্রথম প্রজেক্টের হাতেখড়ি (স্টেপ-বাই-স্টেপ বাংলা টিউটোরিয়াল)
ওয়েলকাম! আপনি যদি একজন ডেভেলপার হতে চান, তবে Git আপনার জন্য একটি সুপার পাওয়ার। এটি আপনাকে আপনার কোডের ইতিহাস সংরক্ষণ করতে (Time Machine-এর মতো) এবং টিমের সাথে সহজে কাজ করতে সাহায্য করে। কিন্তু কমান্ড লাইন অনেকের কাছে কঠিন মনে হতে পারে। এখানেই SourceTree আমাদের বন্ধু!
SourceTree হলো একটি গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) যা দিয়ে আপনি মাউস ক্লিকের মাধ্যমে Git-এর সব কাজ করতে পারবেন। এই টিউটোরিয়ালটি আপনাকে একদম শুরু থেকে একজন প্রো-এর মতো SourceTree ব্যবহার করতে শিখিয়ে দেবে।
আজ আমরা কী কী শিখব?
- প্রস্তুতি: SourceTree এবং প্রয়োজনীয় টুলস ইনস্টল করা।
- প্রথম পদক্ষেপ: GitHub থেকে আপনার প্রথম প্রজেক্ট (Repository) ক্লোন করা।
- আপনার প্রথম কোড: লোকাল কম্পিউটারে কোড পরিবর্তন করে GitHub-এ পাঠানো (Stage, Commit, Push)।
- ব্রাঞ্চিং-এর জাদু: নিরাপদে নতুন ফিচার তৈরির জন্য ব্রাঞ্চ তৈরি ও ব্যবহার।
- টিমওয়ার্ক: কোড একত্রিত করা (Merge) এবং কনফ্লিক্ট (Conflict) সমাধান করা।
- বিশেষ জ্ঞান: SSH এবং HTTPS কী ও কখন কোনটা ব্যবহার করবেন।
- প্র্যাকটিস প্ল্যান: নিজেকে প্রো বানানোর জন্য একটি সাপ্তাহিক চ্যালেঞ্জ।
১. প্রস্তুতি: আমাদের কী কী লাগবে?
যেকোনো কাজ শুরুর আগে সরঞ্জাম প্রস্তুত রাখতে হয়। আমাদের ক্ষেত্রেও তাই।
- SourceTree: আমাদের প্রধান টুল। এটি Windows বা Mac-এর জন্য ডাউনলোড করুন। এটি ফ্রি! (ডাউনলোড লিংক (opens in a new tab))
- GitHub অ্যাকাউন্ট: আপনার কোড অনলাইনে রাখার জন্য একটি ক্লাউড স্টোরেজ। GitHub হলো ডেভেলপারদের ফেসবুক! যদি অ্যাকাউন্ট না থাকে, এখনই এখানে (opens in a new tab) একটি খুলে নিন।
- একটি স্যাম্পল প্রজেক্ট: আমরা একটি React প্রজেক্ট ব্যবহার করব। আপনার কম্পিউটারে Node.js এবং npm ইনস্টল করা না থাকলে করে নিন।
ইনস্টলেশন (Windows/Mac):
- SourceTree ওয়েবসাইট থেকে আপনার অপারেটিং সিস্টেম অনুযায়ী ফাইলটি ডাউনলোড করুন।
- ডাউনলোড করা ফাইলে ডাবল ক্লিক করে ইনস্টলেশন শুরু করুন। উইজার্ডের প্রতিটি ধাপে "Next" বা "Accept" দিয়ে এগিয়ে যান।
- SourceTree আপনাকে Atlassian অ্যাকাউন্টে লগইন করতে বলতে পারে। আপনি চাইলে "Skip" করতে পারেন। এটি Git ইনস্টল করতে বললে সম্মতি দিন।
অভিনন্দন! আপনার প্রধান টুল এখন প্রস্তুত।
২. প্রথম পদক্ষেপ: GitHub থেকে প্রজেক্ট নামানো (Clone)
ধরুন, আপনার টিম একটি প্রজেক্ট শুরু করেছে এবং কোডটি GitHub-এ রাখা আছে। আপনার প্রথম কাজ হলো সেই কোডটি আপনার কম্পিউটারে নামিয়ে আনা। এই প্রক্রিয়াকে বলা হয় "Clone"।
- GitHub-এ যান: আপনার স্যাম্পল প্রজেক্ট রিপোজিটরিতে যান। যদি না থাকে, একটি নতুন রিপোজিটরি তৈরি করুন (
my-first-react-appনামে)। - URL কপি করুন: রিপোজিটরির পেজে সবুজ রঙের
< > Codeবাটনে ক্লিক করুন। HTTPS ট্যাব থেকে URL-টি কপি করুন। দেখতে এমন হবে:https://github.com/your-username/my-first-react-app.git - SourceTree খুলুন: SourceTree ওপেন করে উপরের মেন্যু থেকে
Cloneবাটনে ক্লিক করুন। - পেস্ট করুন: "Source URL" ফিল্ডে কপি করা URL-টি পেস্ট করুন।
- লোকেশন ঠিক করুন: "Destination Path" এ আপনার কম্পিউটারের সেই ফোল্ডারটি দেখিয়ে দিন যেখানে প্রজেক্টটি রাখতে চান।
- ক্লোন করুন: এবার
Cloneবাটনে ক্লিক করুন।
দারুণ! আপনার প্রজেক্ট এখন আপনার কম্পিউটারে। SourceTree-তে রিপোজিটরিটি স্বয়ংক্রিয়ভাবে খুলে যাবে। বাম দিকে আপনি ব্রাঞ্চ এবং মাঝখানে ফাইল স্ট্যাটাস দেখতে পাবেন।
৩. আপনার প্রথম কোড: লোকাল থেকে GitHub-এ পাঠানো
এখন আমরা আমাদের প্রজেক্টে একটি ছোট পরিবর্তন করে সেটি GitHub-এ পাঠাব। এই প্রক্রিয়াটি তিনটি ধাপে বিভক্ত: Stage → Commit → Push।
আসুন, আমাদের React অ্যাপের App.js ফাইলে একটি Welcome মেসেজ যোগ করি।
// App.js
function App() {
return (
<div className="App">
<header className="App-header">
<h1>আমার প্রথম রিঅ্যাক্ট অ্যাপ!</h1>
<p>সোর্সট্রি দিয়ে কোড পুশ করতে শিখছি।</p>
</header>
</div>
);
}
export default App;ফাইলটি সেভ করার পর SourceTree-তে ফিরে আসুন।
ধাপ ১: Stage (মঞ্চে তোলা)
- SourceTree-এর "File Status" ট্যাবে যান। আপনি দেখবেন
App.jsফাইলটি "Unstaged files" লিস্টে দেখাচ্ছে। এর মানে, Git এই পরিবর্তনটি সম্পর্কে জানে, কিন্তু পরবর্তী ধাপে নেওয়ার জন্য প্রস্তুত নয়। App.jsফাইলের পাশের চেকবক্সে টিক দিন অথবা ফাইলটিকে ড্র্যাগ করে উপরের "Staged files" বক্সে নিয়ে আসুন।- কেন Stage করি? কমিট করার আগে কোন কোন ফাইলের পরিবর্তন আমরা একসাথে পাঠাতে চাই, তা বাছাই করার জন্যই স্টেজিং ব্যবহার করা হয়।
ধাপ ২: Commit (সংরক্ষণ করা)
- এখন Staged ফাইলগুলো কমিট করার জন্য প্রস্তুত। নিচের Commit Message বক্সে আপনার পরিবর্তনের একটি সংক্ষিপ্ত এবং স্পষ্ট বর্ণনা লিখুন। যেমন:
feat: Add welcome message in App component। - ভালো Commit Message লেখার নিয়ম: কী পরিবর্তন করেছেন তা সংক্ষেপে বলুন। যেমন:
fix: user login bugবাdocs: update README file। - ডানদিকের নিচের
Commitবাটনে ক্লিক করুন। আপনার পরিবর্তনটি এখন আপনার লোকাল কম্পিউটারে স্থায়ীভাবে সেভ হয়ে গেছে।
ধাপ ৩: Push (অনলাইনে পাঠানো)
- কমিট করার পর আপনার পরিবর্তনটি শুধু আপনার কম্পিউটারেই আছে, GitHub-এ নেই। এটিকে GitHub-এ পাঠাতে উপরের
Pushবাটনে ক্লিক করুন। - একটি নতুন উইন্ডো আসবে। বাম পাশের
main(বাmaster) ব্রাঞ্চটি সিলেক্ট করেOKচাপুন। - কিছুক্ষণ অপেক্ষা করুন। সফলভাবে Push হলে আপনি একটি বার্তা দেখতে পাবেন।
চমৎকার! এবার GitHub-এ আপনার রিপোজিটরিটি রিফ্রেশ করে দেখুন। আপনি আপনার নতুন কোড দেখতে পাবেন।
৪. ব্রাঞ্চিং-এর জাদু: নিরাপদে নতুন ফিচার যোগ করা
ধরুন, আপনি আপনার অ্যাপে একটি নতুন লগইন পেজ যোগ করতে চান, কিন্তু মূল কোডে কোনো সমস্যা করতে চান না। এখানেই ব্রাঞ্চ (Branch) আপনার জীবন বাঁচাবে। ব্রাঞ্চ হলো আপনার প্রজেক্টের একটি কপি, যেখানে আপনি মূল প্রজেক্টকে প্রভাবিত না করে নতুন কাজ করতে পারেন।
- ব্রাঞ্চ তৈরি: SourceTree-তে উপরের
Branchবাটনে ক্লিক করুন। - নাম দিন: নতুন ব্রাঞ্চের একটি সুন্দর নাম দিন। সাধারণত ফিচার ব্রাঞ্চের নাম
feature/দিয়ে শুরু হয়। যেমন:feature/login-page। Create Branch-এ ক্লিক করুন। SourceTree স্বয়ংক্রিয়ভাবে আপনাকে নতুন ব্রাঞ্চে নিয়ে যাবে (Checkout)।- কাজ করুন: এখন আপনি এই ব্রাঞ্চে নতুন ফাইল তৈরি, কোড পরিবর্তনসহ যেকোনো কাজ করতে পারেন। মূল
mainব্রাঞ্চ সুরক্ষিত থাকবে। - কাজ শেষে Push: আপনার কাজ শেষ হলে আগের মতোই Stage → Commit → Push করুন। Push করার সময় SourceTree নতুন ব্রাঞ্চটি GitHub-এ তৈরি করতে চাইবে, সম্মতি দিন।
এখন আপনার নতুন ফিচারটি GitHub-এ একটি আলাদা ব্রাঞ্চে আছে। এরপর আপনি একটি Pull Request (PR) তৈরি করে আপনার টিমের অন্যদের কোড রিভিউ করতে বলতে পারেন এবং সব ঠিক থাকলে মূল ব্রাঞ্চে Merge করতে পারেন।
৫. টিমওয়ার্ক: Merge এবং Conflict সমাধান
যখন আপনার feature ব্রাঞ্চের কাজ শেষ এবং রিভিউ সম্পন্ন, তখন সেটিকে মূল main ব্রাঞ্চের সাথে যুক্ত করতে হয়। এই প্রক্রিয়াকে Merge বলে।
SourceTree দিয়ে Merge করা:
- প্রথমে
mainব্রাঞ্চে ফিরে আসুন। বাম দিকের "Branches" তালিকা থেকেmain-এর উপর ডাবল ক্লিক করুন। mainব্রাঞ্চে রাইট-ক্লিক করে "Merge 'feature/login-page' into current branch" অপশনটি সিলেক্ট করুন।- সবকিছু ঠিক থাকলে কোডগুলো একত্রিত হয়ে যাবে। এরপর শুধু
Pushকরে দিলেইmainব্রাঞ্চটি GitHub-এ আপডেট হয়ে যাবে।
Merge Conflict: ভয় পাওয়ার কিছু নেই!
যদি আপনি এবং আপনার টিমের অন্য কেউ একই ফাইলের একই লাইনে পরিবর্তন করেন, Git দ্বিধায় পড়ে যায় যে কার পরিবর্তনটি রাখা উচিত। একেই Merge Conflict বলে।
SourceTree আপনাকে দেখাবে কোন কোন ফাইলে কনফ্লিক্ট হয়েছে।
- কনফ্লিক্ট হওয়া ফাইলে রাইট-ক্লিক করে "Resolve Conflicts" → "Launch External Merge Tool" সিলেক্ট করুন।
- VS Code বা আপনার পছন্দের এডিটরে ফাইলটি খুললে আপনি
<<<<<<< HEAD,=======, এবং>>>>>>>চিহ্ন দেখতে পাবেন। - এই চিহ্নগুলোর মাঝখানের কোড carefully রিভিউ করে সিদ্ধান্ত নিন কোন অংশটি রাখবেন আর কোনটি ফেলে দেবেন। অপ্রয়োজনীয় চিহ্নগুলো মুছে ফেলুন।
- ফাইলটি সেভ করে SourceTree-তে ফিরে আসুন এবং ফাইলটিকে "Mark as Resolved" করুন।
- সবশেষে, একটি নতুন Merge Commit করে
Pushকরুন।
৬. বিশেষ জ্ঞান: SSH vs HTTPS
আপনি যখন ক্লোন বা পুশ করেন, তখন দুটি উপায়ে GitHub-এর সাথে সংযোগ স্থাপন করতে পারেন:
- HTTPS: এটি সবচেয়ে সহজ। URL কপি করে পেস্ট করলেই কাজ হয়। প্রতিবার পুশ করার সময় ইউজারনেম/পাসওয়ার্ড (বা Personal Access Token) চাইতে পারে। ছোট বা ব্যক্তিগত প্রজেক্টের জন্য এটি যথেষ্ট।
- SSH: এটি একটু সেটআপ করতে হয়, কিন্তু একবার হয়ে গেলে আর পাসওয়ার্ড দিতে হয় না। এটি অনেক বেশি নিরাপদ এবং প্রফেশনাল কাজে এটিই ব্যবহৃত হয়। আপনাকে একটি SSH Key তৈরি করে আপনার GitHub অ্যাকাউন্টে যোগ করতে হয়। (কীভাবে করবেন? (opens in a new tab))
SourceTree-তে SSH ব্যবহার: Tools > Options (Windows) বা Preferences (Mac) এ গিয়ে Authentication ট্যাবে আপনার SSH Key যোগ করতে পারেন।
৭. নিজেকে প্রো বানানোর ৫-দিনের প্র্যাকটিস প্ল্যান
এই টিউটোরিয়ালটি ভালোভাবে আয়ত্ত করতে নিচের প্ল্যানটি অনুসরণ করুন। প্রতিদিন ৩০ মিনিট সময় দিলেই চলবে।
- দিন ১: SourceTree ইনস্টল করুন। একটি নতুন GitHub রিপোজিটরি তৈরি করে সেটিকে Clone করুন।
- দিন ২: আপনার লোকাল প্রজেক্টের
README.mdফাইলে নিজের সম্পর্কে কিছু লিখুন। এরপর Stage → Commit → Push করে পরিবর্তনটি GitHub-এ পাঠান। - দিন ৩:
feature/add-bioনামে একটি নতুন ব্রাঞ্চ তৈরি করুন। সেখানে একটি নতুনbio.txtফাইল যোগ করে কিছু লিখে কমিট ও পুশ করুন। - দিন ৪: GitHub-এ একটি Pull Request তৈরি করে
feature/add-bioব্রাঞ্চটিকেmainব্রাঞ্চে Merge করুন। - দিন ৫: ইচ্ছাকৃতভাবে একটি Merge Conflict তৈরি করুন।
mainব্রাঞ্চ ও অন্য একটিfeatureব্রাঞ্চেREADME.md-এর একই লাইন পরিবর্তন করে মার্জ করার চেষ্টা করুন। এরপর কনফ্লিক্টটি সমাধান করুন।
✅ SourceTree ব্যবহার করে কীভাবে main ব্রাঞ্চের সর্বশেষ কোড তোমার mojnu/homepage ব্রাঞ্চে আনবে:
1. প্রথমে mojnu/homepage ব্রাঞ্চে Checkout করো
- SourceTree ওপেন করো
- বাম দিকে Branches থেকে
→
mojnu/homepageএর উপর ডাবল-ক্লিক → এখন তুমি এই ব্রাঞ্চে আছো
2. এখন রিমোট থেকে latest main ফেচ করো
- উপরে Fetch বাটন আছে
ক্লিক করো → এতে
origin/mainএর সর্বশেষ আপডেট আসবে
3. main ব্রাঞ্চকে mojnu/homepage ব্রাঞ্চে Merge করো
-
নিশ্চিত হও যে তুমি mojnu/homepage এ আছো
-
উপরে Merge বাটন চাপো
-
একটি popup আসবে → সেখানে main (বা
origin/main) সিলেক্ট করো -
তারপর OK / Merge চাপো
4. কোনো conflict থাকলে resolve করো
- যদি conflict দেখায় → ফাইল খুলে ঠিক করো → তারপর Mark as resolved → Commit করো
5. শেষ পর্যন্ত push করো
- Merge সফল হলে
Push → এখন
mojnu/homepageব্রাঞ্চে main এর latest code চলে এসেছে।
🔥 সংক্ষেপে (Very Short)
checkout → mojnu/homepage
fetch → main
merge → main → mojnu/homepage
resolve conflicts if needed
pushশেষ কথা
অভিনন্দন! আপনি সফলভাবে Git এবং SourceTree-এর বেসিক ওয়ার্কফ্লো শিখে ফেলেছেন। মনে রাখবেন, Git একটি বিশাল জগৎ, কিন্তু এই জ্ঞানটুকু আপনাকে যেকোনো প্রজেক্টে কাজ শুরু করার জন্য যথেষ্ট আত্মবিশ্বাস দেবে। যত বেশি প্র্যাকটিস করবেন, তত দ্রুত শিখবেন।
শুভ কোডিং!