একজন বন্ধুকে আজ গিট সমস্যাতে সাহায্য করার সময় আমাকে একটি শাখা চালু করতে হয়েছিল যা শাখা থেকে সম্পূর্ণ পৃথক হওয়া দরকার master
। এই শাখার বিষয়বস্তুগুলির শাখায় যে বিকাশ master
ঘটেছিল তার থেকে সত্যই আলাদা উত্স ছিল তবে master
পরবর্তী সময়ে সেগুলি শাখায় একীভূত হতে চলেছিল ।
আমি নীচে থেকে জন উইগলির গিটটি পড়ে মনে পড়েছিলাম কীভাবে শাখাগুলি একটি নির্দিষ্ট কনভেনশন অনুসরণ করে এমন একটি প্রতিশ্রুতিবদ্ধতার লেবেল এবং কীভাবে কোনও প্রতিশ্রুতি ফাইলের একটি গাছের সাথে বাঁধা হয় এবং parentচ্ছিকভাবে পিতামাতার প্রতিশ্রুতিবদ্ধ হয়। আমরা গিটের নদীর গভীরতানির্ণয় ব্যবহার করে বিদ্যমান সংগ্রহস্থলের জন্য প্যারেন্টলেস কমিট তৈরি করতে গিয়েছিলাম:
সুতরাং আমরা সূচীর সমস্ত ফাইল থেকে মুক্তি পেয়েছি ...
$ git rm -rf .
... একটি টারবাল থেকে ডিরেক্টরি এবং ফাইলগুলি বের করা হয়েছে, সেগুলি সূচকগুলিতে যুক্ত করা হয়েছে ...
$ git add .
... এবং একটি ট্রি অবজেক্ট তৈরি করেছে ...
$ git write-tree
( git-write-tree
আমাদের তৈরি গাছের বস্তুর sha1sum বলেছিলেন।)
তারপরে, আমরা গাছের প্রতিশ্রুতি দিয়েছি, পিতামাতার অঙ্গীকারগুলি নির্দিষ্ট না করে ...
$ echo "Imported project foo" | git commit-tree $TREE
( git-commit-tree
তৈরি কমিট অবজেক্টের sha1sum আমাদের জানিয়েছে))
... এবং একটি নতুন শাখা তৈরি করেছে যা আমাদের সদ্য নির্মিত প্রতিশ্রুতিতে নির্দেশ করে।
$ git update-ref refs/heads/other-branch $COMMIT
অবশেষে, আমরা master
সেখানে কাজ চালিয়ে যেতে শাখায় ফিরে এসেছি।
$ git checkout -f master
এটি পরিকল্পনা মতো কাজ করেছে বলে মনে হয়। তবে আমি স্পষ্টতই এমন কোনও প্রক্রিয়া নয় যাঁর পরামর্শ দেওয়া উচিত যিনি কেবল গিট ব্যবহার শুরু করছেন, হালকাভাবে রাখুন। একটি নতুন শাখা তৈরির কি আরও সহজ উপায় আছে যা এখনও পর্যন্ত সংগ্রহশালায় ঘটে যাওয়া সমস্ত কিছুর সাথে সম্পূর্ণ সম্পর্কযুক্ত নয়?