একটি Git রিপোজিটরিতে পরিবর্তন সংরক্ষণ করা সিম্পলি একটি ফাইল সংরক্ষণ করার মতো নয়। Git ভার্সন কন্ট্রোল সিস্টেম একটি আরও জটিল পদ্ধতি ব্যবহার করে পরিবর্তন ট্র্যাক করতে, যা ডেভেলপারদের একটি রিপোজিটরিতে কোডে করা পরিবর্তনগুলোর ওপর আরও গ্র্যানুলার কন্ট্রোল দেয়।
git commit কমান্ড একটি ধাপ "saving"-এ পরিবর্তনগুলো একটি প্রজেক্টে একটি রিপোজিটরিতে সংরক্ষণ করার। git add কমান্ড লাইন ফাংশন প্রথমে ব্যবহার করা হয় পরিবর্তনগুলোর একটি রেকর্ড তৈরি করতে যেগুলো একটি কমিটে সংরক্ষণ হবে, তারপর git commit ব্যবহার করা হয় সেই পরিবর্তন সহ একটি কমিট তৈরি করতে। শেষে, git push ব্যবহার করা হয় কমিটটি একটি সেন্ট্রাল রিপোজিটরিতে পুশ করতে।
এই টিউটোরিয়ালে, আমরা উদাহরণসহ এক্সপ্লোর করব কীভাবে git commit কমান্ড ব্যবহার করে Git-এ কমিট তৈরি করবেন। এই টিউটোরিয়াল পড়ার শেষে, আপনি git commit ব্যবহার করে কমিট তৈরি করার এক্সপার্ট হবেন।
Git Commits
কমিটগুলো Git ভার্সন কন্ট্রোল সিস্টেমের একটি গুরুত্বপূর্ণ অংশ।
কমিট সম্পর্কে চিন্তা করার একটি উপায় হলো সেগুলো একটি প্রজেক্টের স্ন্যাপশট একটি নির্দিষ্ট মুহূর্তে প্রজেক্টের ইতিহাসে। যখন একটি কমিট তৈরি হয়, এটি একটি রেকর্ড তৈরি করে কীভাবে সকল ফাইল এবং ডিরেক্টরি দেখত প্রজেক্টে সেই সময় কমিটটি তৈরি হয়েছিল।
এই রেকর্ড ভবিষ্যতে পড়া যেতে পারে দেখতে প্রজেক্টটি কীভাবে দেখত একটি পয়েন্ট ইন টাইমে এবং কে কী পরিবর্তন করেছিল কোন ফাইলগুলতে প্রজেক্টে। নিশ্চিতভাবে, কমিটগুলো Git-এ একটি গুরুত্বপূর্ণ ফিচার কারণ এটি ডেভেলপারদের তাদের রিপোজিটরির إيفোলিউশন একটি কমপ্রিহেনসিভ রেকর্ড রাখতে দেয়।
অন্য ভার্সন কন্ট্রোল সিস্টেমের বিপরীতে, একটি কমিট সেন্ট্রাল রিপোজিটরিને প্রভাবিত করে না যতক্ষণ না আপনি প্রস্তুত, যার মানে এটি একটি গ্যাপ হিসেবে কাজ করতে পারে একটি রিপোজিটরিতে করা পরিবর্তন এবং একটি রিপোজিটরির মেইন ভার্সনের মধ্যে।
অন্য কথায়, একটি রিপোজিটরির মেইন ভার্সনে সরাসরি পরিবর্তন আনতে বাধ্য না হয়ে—যে হতে পারে অনেক কন্ট্রিবিউটর აქ্টিভলি ওয়াচ করছে রিপোজিটরি—একজন ডেভেলপার তাদের কোড তাদের লোকাল রিপোজিটরিতে কমিট করতে পারে এবং পরে মেইন রিপোজিটরিতে পুশ করতে পারে।
৮১% পার্টিসিপেন্ট заяви করেছেন যে বুটক্যাম্পে অংশগ্রহণের পর তাদের টেক জব প্রস্পেক্টস নিয়ে তারা আরও আত্মবিশ্বাসী মনে করছেন। আজই একটি বুটক্যাম্পে ম্যাচ করুন।
গড় বুটক্যাম্প গ্র্যাজুট ক্যারিয়ার ট্রানজিশনে ছয় মাসের কম সময় ব্যয় করেছেন, বুটক্যাম্প শুরু থেকে প্রথম জব পাওয়ার পর্যায়ে।
একটি কমিট তৈরি করা "saving"-এর সেকেন্ড-ফ্রম-লাস্ট স্টেজ Git-এ। আপনি একটি কমিট তৈরি করার পর, পরবর্তী ধাপ হলো git push ব্যবহার করে আপনার করা পরিবর্তনগুলো সেন্ট্রাল রিপোজিটরিতে পুশ করা।
Git Commit কীভাবে ব্যবহার করবেন
git commit কমান্ড সকল স্টেজড পরিবর্তন লোকাল রিপোজিটরিতে সংরক্ষণ করে।
"Staged changes" বলতে স্টেজিং এরিয়াতে থাকা সকল ফাইলকে বোঝায়, যেগুলো git add কমান্ড ব্যবহার করে যোগ করা হয়েছে। git add কমান্ড সম্পর্কে আরও জানতে, আপনি আমাদের বিগিনার গাইড টু git add পড়তে পারেন।
চলুন এক্সপ্লোর করি কীভাবে git commit কমান্ড ব্যবহার করতে হয়।
git commit
git commit কমান্ডের সবচেয়ে বেসিক ব্যবহার নিচের মতো:
git commit
এই কমান্ড স্টেজড পরিবর্তনগুলো লোকাল রিপোজিটরিতে কমিট করে। যখন এই কমান্ড রান করা হয়, একটি টেক্স্ট এডিটর খুলবে আপনাকে একটি কমিট মেসেজ সাবমিট করতে বলবে।
এই মেসেজটি হলো যেখানে আপনাকে সংক্ষিপ্তে বর্ণনা করতে হবে আপনি রিপোজিটরিতে একটি কমিটে কী পরিবর্তন আনেছেন। আপনি একবার একটি কমিট মেসেজ লিখলে, আপনি টেক্স্ট এডিটর বন্ধ করতে পারেন এবং তারপর কমিটটি তৈরি হবে।
git commit -a
-a ফ্ল্যাগটি, যেটি stands for all, আপনাকে অটোমেটিক্যালি সকল মডিফাইড ফাইল স্টেজ করতে দেয় কমিট করার জন্য।
ধরা যাক আপনার একটি ফাইল আছে CONTRIBUTORS.md নামে যা আপনি আপনার রিপোজিটরিতে কমিট করেছেন। আপনি যদি এই ফাইলটি পরিবর্তন করেন, আপনি git commit -a কমান্ড ব্যবহার করতে পারেন পরিবর্তনগুলো স্টেজ এবং আপনার রিপোজিটরিতে যোগ করতে।
-a ফ্ল্যাগ ব্যবহার করলে আপনাকে "git add" রান করা স্কিপ করতে দেয় সকল চেঞ্জড ফাইলের ওপর। এর কারণ হলো -a ফ্ল্যাগ Git-কে ইনস্ট্রাক্ট করে সকল মডিফাইড ফাইল স্টেজ করতে। যাইহোক, -a ফ্ল্যাগ কোনো নতুন ফাইল স্টেজ করবে না। তাই, আপনি যদি "README.md" নামে একটি ফাইল তৈরি করেন, সেটি স্টেজ হবে না যদি না আপনি "git add" প্রথমে রান করেন।
-a ফ্ল্যাগের সিনট্যাক্স:
git commit -a
এই কমান্ড আপনার রিপোজিটরিতে কমিট করার জন্য সকল মডিফাইড ফাইল অটোমেটিক্যালি স্টেজ করবে।
git commit -m
শायद git commit-সহ ব্যবহৃত সবচেয়ে সাধারণ ফ্ল্যাগ হলো -m ফ্ল্যাগ। -m ফ্ল্যাগটি, যেটি stands for message, একটি কমিটে একটি কমিট মেসেজ যোগ করতে ব্যবহৃত হয়।
আপনি যখন git commit কমান্ড -m ফ্ল্যাগ ছাড়া ব্যবহার করেন, একটি টেক্স্ট এডিটর খুলবে যেখানে আপনি একটি মেসেজ লিখতে পারেন, যেমন আমরা আগে আলোচনা করেছি। যাইহোক, -m ফ্ল্যাগ ব্যবহার করলে আপনাকে একটি টেক্স্ট এডিটর খোলার ওপর থেকে স্কিপ করতে দেয় সরাসরি একটি কমিট মেসেজ স্পেসিফাই করে।
git commit কমান্ড -m ফ্ল্যাগ সহ ব্যবহার করার সিনট্যাক্স:
git commit -m "feat: commit message"
এই কমান্ডে, আমরা -m ফ্ল্যাগ স্পেসিফাই করি ইন্ডিকেট করতে আমরা সরাসরি আমাদের কমিটে একটি কমিট মেসেজ যোগ করতে চাই (টেক্স্ট এডিটর খুলার বদলে যেখানে আমরা একটি মেসেজ যোগ করি)। তারপর, আমরা আমাদের কমিট মেসেজ কোটেশন মার্কসে এনক্লোজ করি -m ফ্ল্যাগের পর। এই কেসে, আমাদের কমিট মেসেজ হলো "feat: commit message"।
Git Commit উদাহরণ
চলুন একটি উদাহরণ দিয়ে ইলাস্ট্রেট করি কীভাবে আপনি git commit কমান্ড ব্যবহার করতে পারেন।
ধরা যাক আমরা একটি প্রজেক্টে কাজ করছি এবং আমরা অ্যাপ.পাই ফাইলটি আমাদের প্রজেক্টে সম্পাদনা করেছি। আমরা সকল পরিবর্তন করেছি যা আমরা ফাইলে করতে চেয়েছিলাম, এবং আমরা ফাইলের জন্য একটি কমিট তৈরি করার জন্য প্রস্তুত।
প্রথম ধাপ হলো ফাইলটি স্টেজিং এরিয়াতে যোগ করা git add ব্যবহার করে। আপনি এটি এই কোড দিয়ে করতে পারেন:
git add app.py
এখন app.py ফাইলটি স্টেজিং এরিয়াতে আছে। এর মানে আমরা সেটি আমাদের কোডে কমিট করতে পারি যখন আমরা প্রস্তুত।
আমরা আমাদের app.py ফাইলে একটি নতুন ফাংশন "runApp()" যোগ করেছি, যা আমরা লোকাল রিপোজিটরিতে কমিট করতে চাই। আমরা এটি এই কোড দিয়ে করতে পারি:
git commit -m "feat: Add runApp() function"
এই কоман্ড আমাদের app.py ফাইলে করা পরিবর্তন সহ একটি কমিট তৈরি করে। আমাদের কমিটের সাথে যুক্ত মেসেজ হলো "feat: Add runApp() function", যা সংক্ষিপ্তে বর্ণনা করে আমরা আমাদের রিপোজিটরিতে কী পরিবর্তন করেছি।
একটি Git Commit অमेंড করুন
git commit কমান্ড এর পূর্বের কমিটকে অमेंড করার জন্যও অনুমতি দেয়। আপনি পূর্বের কমিট অमेंড করতে পারেন --amend অপশন ব্যবহার করে।
ধরা যাক আমরা এখনই আমাদের কমিট তৈরি করেছি এবং আমরা __init__.py ফাইলটি আমাদের কমিটে যোগ করা ভুলে গেছি। আমরা আমাদের ইনিশিয়াল কমিট অमेंড করতে পারি যাতে আমাদের ফাইলটি ইনক্লুডেড থাকে এই কোড ব্যবহার করে:
git add __init__.py git commit --amend -m "feat: Add runApp() function and update init file"
এটি আমাদের পূর্বের কমিটকে অमेंড করবে __init__.py ফাইল ইনক্লুড করতে, এবং আমাদের কমিটকে রিভাইজ করবে নতুন কমিট মেসেজ ব্যবহার করে যা আমরা উপরের কমান্ডে স্পেসিফাই করেছি।
--amend ফ্ল্যাগ সফ্টওয়্যার ডেভেলপাররা প্রায়শই ব্যবহার করে কারণ সফ্টওয়্যার ভার্সনিং করার সময় ভুল করা সহজ। উদাহরণস্বরূপ, আপনি একটি ফাইল স্টেজ করতে ভুলে যেতে পারেন একটি কমিটে, অথবা আপনি একটি টাইপো করতে পারেন যখন আপনি একটি কমিট মেসেজ লিখছেন, অথবা আপনার কমিট মেসেজ একটি মেজর চেঞ্জ ইনক্লুড করতে পারে না যা আপনি আপনার কোডে করেছেন।
অতএব, আপনি সম্ভবত --amend ফ্ল্যাগ ব্যবহার করবেন ঘন ঘন যখন আপনি সফ্টওয়্যার ডেভেলপ করছেন।
একটি ভালো কমিট মেসেজ লেখা
যে কারণে আমরা আলোচনা করেছি, একটি কমিট মেসেজ লেখা ম্যান্ডেটরি যখন আপনি git কমান্ড ব্যবহার করছেন। যাইহোক একটি কমিট মেসেজ টেকনিক্যালি যেকোনো কিছু ইনক্লুড করতে পারে যা আপনি চান, আপনাকে কিছু সময় ব্যয় করতে হবে চিন্তা করার জন্য আপনি আপনার কমিট মেসেজে কী ইনক্লুড করতে চান।
যাইহোক কমিট মেসেজ লেখার কোনো রুল নেই, কিছু বেস্ট প্র্যাকটিস রয়েছে যা ডেভেলপাররা প্রায়শই ব্যবহার করে নিশ্চিত করার জন্য তারা কনসিস্টেন্ট এবং ডেসক্রিপ্টিভ কমিট মেসেজ লিখে।
এখানে কিছু জিনিস আছে যা আপনাকে মাথায় রাখা উচিত যখন আপনি একটি git commit মেসেজ লিখছেন:
- কমিট মেসেজের সাবজেক্ট লাইন ক্যাপিটালাইজ করুন
- সাবজেক্ট লাইন ৫০ ক্যারেক্টারের মধ্যে রাখুন
- কমিটের বডি ব্যবহার করে ব্যাখ্যা করুন আপনি কী পরিবর্তন করেছেন (কেন নয়)
- কমিটের বডিতে প্রতিটি লাইন ৭২ ক্যারেক্টারের কম রাখুন।
এই রুলগুলো ফলো করলে আপনি আরও রিডেবল কমিট মেসেজ লিখতে পারবেন যেগুলো সহজে ইন্টারপ্রেট করা যায়।
অতিরিক্তভাবে, আপনি আপনার কমিট মেসেজে অন্যান্য ইস্যু বা পুল রিকোয়েস্ট রেফার করতে পারেন। উদাহরণস্বরূপ, যদি একটি কমিট ইস্যু #22 একটি রিপোজিটরিতে সমাধান করে, আপনি আপনার কমিট টাইটেল দিতে পারেন "fix: resolves issue #22" এবং কমিটের বডিতে একটি বর্ণনা ইনক্লুড করতে পারেন আপনি কী পরিবর্তন করেছেন ইস্যু সমাধান করতে।
উপসংহার
git commit কমান্ড ফাইলগুলকে স্টেজিং এরিয়াত থেকে একটি কমিটে মুভ করতে ব্যবহৃত হয়। এই কমান্ড git add-এর পর রান করা হয়, যেটি ফাইলগুলকে স্টেজিং এরিয়াতে যোগ করতে ব্যবহৃত হয়। git commit একটি স্ন্যাপশট তৈরি করে একটি Git রিপোজিটরিতে করা পরিবর্তনগুলোর যা তারপর পুশ করা যেতে পারে মেইন রিপোজিটরিতে যখন ডেভেলপার প্রস্তুত।
এই টিউটোরিয়াল আলোচনা করেছি কীভাবে git commit কমান্ড ব্যবহার করে Git রিপোজিটরিতে পরিবর্তন কমিট করতে হয়। এখন আপনার কাছে वो নলেজ রয়েছে যা আপনাকে git commit কমান্ড এক্সপার্টের মতো ব্যবহার শুরু করতে দেবে!