যখন আপনি সেই প্রতিশ্রুতিটি চেক আউট করেন তখন এটি আপনি কী করতে চান তার উপর নির্ভর করে। যদি আপনি যা করছেন তা যদি এটি পরীক্ষা করে দেখা হয় যাতে আপনি সেই সংশোধনটি তৈরি বা পরীক্ষা করতে পারেন, তবে বিচ্ছিন্ন মাথা নিয়ে কাজ করার কোনও সমস্যা নেই। আপনি যে কোনও কমিট ( git checkout masterউদাহরণস্বরূপ) করার আগে কেবল একটি প্রকৃত শাখা পরীক্ষা করে দেখুন , যাতে আপনি কোনও শাখায় অন্তর্ভুক্ত নয় এমন কমিট তৈরি না করেন।
তবে, আপনি যদি সেই বিন্দু থেকে শুরু করে আরও কমিট করতে চান তবে আপনার একটি শাখা তৈরি করা উচিত। যদি আপনি এমন কমিট করেন যেগুলি কোনও শাখার দ্বারা প্রাসঙ্গিক নয়, তারা সহজেই হারিয়ে যেতে পারে এবং শেষ পর্যন্ত গিটের আবর্জনা সংগ্রহকারী দ্বারা পরিষ্কার হয়ে যাবে, কারণ তাদের কোনও কিছুই বোঝায় না। আপনি চালিয়ে একটি নতুন শাখা তৈরি করতে পারেন:
git checkout -b newbranch ea3d5ed
ভিজ্যুয়ালাইজ করতে সহায়তা করার জন্য, এখানে কয়েকটি চিত্র এখানে দেখানো হয়েছে যে কীভাবে একটি বিচ্ছিন্ন মাথাতে কাজ করা একটি শাখায় কাজ করা থেকে আলাদা।
আসুন 3 টি কমিট চালু করে শুরু করা যাক master , এ, বি এবং সি masterবর্তমান শাখা, সুতরাং এটি HEADনির্দেশ করুন masterযা কোনটি সি প্রতিশ্রুতি দেয় C.
এবিসি
* - * - * <- মাস্টার <- হেড
এখন যদি আমরা প্রতিশ্রুতিবদ্ধ হয়, গিটটি একটি প্রতিশ্রুতি তৈরি করবে যার পিতামাতা হিসাবে সি রয়েছে (কারণ এটিই বর্তমান প্রতিশ্রুতি, এর HEADমাধ্যমে নির্দেশিত master) এবং masterসেই নতুন প্রতিশ্রুতিতে নির্দেশ করার জন্য আপডেট করবে । আমাদের সমস্ত কমিট এখন রয়েছে master, এবংHEAD মাধ্যমে নতুন প্রতিশ্রুতিবদ্ধতার দিকে ইঙ্গিত করে master।
এ বি সি ডি
* - * - * - * <- মাস্টার <- হেড
এখন আমাদের বি আলাদা করে বি কে পরীক্ষা করে দেখি HEAD ।
এ বি সি ডি
* - * - * - * <- মাস্টার
^
\ - মাথা
এখানে সবকিছু ঠিকঠাক কাজ করে; আমরা ফাইলগুলির সকলের দিকে নজর দিতে পারি, আমাদের প্রোগ্রামটি তৈরি করতে পারি, এটি পরীক্ষা করতে পারি etc. ইত্যাদি আমরা এমনকি নতুন কমিট তৈরি করতে পারি; তবে আমরা যদি এটি করি তবে আমাদের কোনও শাখা নেই যা আমরা নতুন প্রতিশ্রুতিতে কোন শাখা চিহ্নিত করতে পারি না। এটির দিকে লক্ষ্য করার একমাত্র বিষয় HEAD:
এ বি সি ডি
* - * - * - * <- মাস্টার
\
* <- মাথা
ই
পরে যদি আমরা masterআবার যাচাই করার সিদ্ধান্ত নিই তবে E এর উল্লেখ করার মতো কিছুই থাকবে না
এ বি সি ডি
* - * - * - * <- মাস্টার <- হেড
\
*
ই
যেহেতু এর উল্লেখ করার মতো কিছুই নেই, এটি খুঁজে পাওয়া শক্ত হতে পারে, এবং গিটটি রেফারেন্স ছাড়াই প্রতিশ্রুতিবদ্ধ বলে বিবেচনা করে (তারা যদি আপনি পুনরায় চালু করেন, বা স্কোয়াশ প্যাচগুলিতে বা অন্য মজাদার ইতিহাসের কারসাজি করে থাকেন তবে তারা সাধারণত পরিত্যক্ত প্যাচগুলি উপস্থাপন করে) যা আপনার আর যত্নশীল নয়)। নির্দিষ্ট সময়ের পরে, গিট এটিকে আবর্জনা বিবেচনা করবে, পরের বার আবর্জনা সংগ্রহ চলার সময় তা ফেলে দেওয়া হবে।
সুতরাং, একটি খালি পুনর্বিবেচনা যাচাই করার পরিবর্তে এবং আলাদা হওয়া মাথা পেতে, যদি আপনি মনে করেন যে আপনি আরও কমিট করছেন, আপনার git checkout -b branch Bএকটি শাখা তৈরি করে এটি পরীক্ষা করে নেওয়া উচিত। এখন আপনার প্রতিশ্রুতিগুলি হারাবে না, কারণ সেগুলি একটি শাখায় অন্তর্ভুক্ত করা হবে, যা আপনি সহজেই উল্লেখ করতে পারেন এবং পরে মিশে যেতে পারেন।
এ বি সি ডি
* - * - * - * <- মাস্টার
^
\ - শাখা <- শিরোনাম
আপনি যদি এটি করতে ভুলে যান এবং একটি শাখা থেকে কমিট তৈরি করেন তবে চিন্তার দরকার নেই। আপনি মাথাটি সংশোধন করে একটি শাখা তৈরি করতে পারেন যার সাথে git checkout -b branch। যদি আপনি ইতিমধ্যে masterশাখায় ফিরে এসেছেন এবং বুঝতে পেরেছেন যে আপনি কোনও বিপথগামী প্রতিশ্রুতি ভুলে গেছেন, তবে আপনি এটি ব্যবহার করে দেখতে পাবেন git reflog, যা আপনাকে HEADগত কয়েকদিন ধরে কী অঙ্গীকার করেছে তার ইতিহাস প্রদর্শন করবে । রিফ্লগে থাকা যে কোনও কিছু আবর্জনা সংগ্রহ করা হবে না এবং সাধারণত উল্লেখগুলি কমপক্ষে 30 দিনের জন্য রিফ্লাগে রাখা হয়।