macOS-এ, git worktree remove দিয়ে Terminal থেকে একটি সমাপ্ত লিঙ্কযুক্ত worktree সরান, তবে প্রথমে দেখে নিন যে এটিতে আপনার এখনও প্রয়োজনীয় কোনো পরিবর্তন রয়েছে কি না। Git একটি পরিচ্ছন্ন (clean) worktree মুছে ফেলে; যদি এটি অপরিচ্ছন্ন (dirty) হয়, তবে আপনি জোরপূর্বক অপসারণ না করা পর্যন্ত এটি থেমে যায়। অসমাপ্ত কাজ রাখতে, ডিরেক্টরিটি অপসারণ করার আগে তা কমিট বা স্ট্যাশ করুন। কেবল Git-এর সতর্কতা এড়ানোর জন্য --force যোগ করবেন না: এটি worktree-এর স্থানীয় ফাইলগুলো বাতিল করে দিতে পারে। এই পদক্ষেপগুলো লিঙ্কযুক্ত worktree-এর ক্ষেত্রে প্রযোজ্য, রিপোজিটরির মূল ওয়ার্কিং ডিরেক্টরির জন্য নয়। Git-এর worktree সম্পর্কিত ডকুমেন্টেশন

১. worktree খুঁজুন এবং এর অবস্থা পরীক্ষা করুন

Terminal খুলুন এবং মূল রিপোজিটরিতে অথবা একই রিপোজিটরির অন্তর্ভুক্ত যেকোনো লিঙ্কযুক্ত worktree-তে যান। সম্পর্কিত সমস্ত worktree পাথ এবং ব্রাঞ্চ দেখতে, চালান:

git worktree list

সমাপ্ত worktree-টির সঠিক পাথটি কপি করুন। তারপর সেই worktree-র ভেতর থেকে এর স্ট্যাটাস পরীক্ষা করুন, পাথে স্পেস থাকলে তা উদ্ধৃতি চিহ্নের (quotes) মধ্যে রাখুন:

cd "/path/to/finished-worktree"
git status --short --branch

স্ট্যাটাস আউটপুটটি পরিবর্তিত বা স্টেজ করা ট্র্যাকড ফাইল এবং আনট্র্যাকড ফাইলগুলো দেখতে সাহায্য করে। আপনার কাজের প্রবাহের জন্য প্রয়োজনীয় স্থানীয় ফাইলগুলোর জন্য Finder-এ worktree-টি পরীক্ষা করুন। Git দ্বারা ইগনোর করা ফাইলগুলো সাধারণ স্ট্যাটাস আউটপুটে নাও আসতে পারে। ডিরেক্টরির ভেতরের কোনো কিছু ফেলে দেওয়ার মতো কি না সে বিষয়ে নিশ্চিত না হলে, অপসারণ করার আগে থামুন এবং একটি পৃথক ব্যাকআপ তৈরি করুন অথবা ডিরেক্টরিটি রেখে দিন। একটি Git worktree তার মূল worktree-র সাথে রিপোজিটরি ডেটা শেয়ার করে, তবে এর নিজস্ব চেকআউট এবং ইনডেক্স থাকে; চেকআউট অপসারণ করা কোনো সাধারণ ব্যাকআপ অপারেশন নয়। Git worktree ডকুমেন্টেশন

২. আপনি যেসব পরিবর্তন রাখতে চান সেগুলো সংরক্ষণ করুন

কাজটি রিপোজিটরিতে রাখার জন্য প্রস্তুত হলে, worktree-র ব্রাঞ্চে তা কমিট করুন। প্রথমে স্ট্যাটাস এবং diff পর্যালোচনা করুন, তারপর শুধুমাত্র যেসব ফাইল অন্তর্ভুক্ত করতে চান সেগুলো স্টেজ করে কমিট করুন:

git diff
git add path/to/file
 git commit -m "Describe the finished work"

আপনার শেল যদি অপ্রত্যাশিত আচরণ করে তবে git commit-এর আগের অনাকাঙ্ক্ষিত ফাঁকা স্থানটি (leading space) সরিয়ে দিন; একটি পরিচ্ছন্ন রূপ হলো git commit -m "Describe the finished work"। একটি কমিট Git হিস্ট্রিতে পরিবর্তনগুলো সংরক্ষণ করে, তবে worktree অপসারণ করার আগে এটি সঠিক ব্রাঞ্চে আছে কি না তা নিশ্চিত করুন।

পরিবর্তনগুলো অসম্পূর্ণ থাকলে, তার পরিবর্তে ট্র্যাকড এডিট এবং আনট্র্যাকড ফাইলগুলো স্ট্যাশ করুন:

git stash push -u -m "Before removing finished worktree"
git stash list

-u অপশনটি আনট্র্যাকড ফাইলগুলোকেও অন্তর্ভুক্ত করে। ইগনোর করা ফাইলগুলো অন্তর্ভুক্ত করা হয় না, তাই ইগনোর করা যেকোনো লোকাল কনফিগারেশন, জেনারেট হওয়া ফাইল বা অন্যান্য প্রয়োজনীয় ডেটা আলাদাভাবে সংরক্ষণ করুন। পরবর্তী পদক্ষেপে যাওয়ার আগে নতুন স্ট্যাশটি তালিকায় প্রদর্শিত হচ্ছে কি না তা নিশ্চিত করুন। স্ট্যাশগুলো রিপোজিটরির অংশ, এবং পরবর্তীতে আপনি অন্য একটি worktree থেকে git stash apply stash@{0} দিয়ে সংরক্ষিত পরিবর্তনগুলো প্রয়োগ করতে পারেন; প্রথমে এন্ট্রি নম্বরটি যাচাই করে নিন, কারণ পরবর্তী স্ট্যাশগুলো তালিকার ক্রম পরিবর্তন করতে পারে। স্ট্যাশ প্রয়োগ করলে দ্বন্দ্ব (conflicts) তৈরি হতে পারে, তাই স্ট্যাশটি মুছে ফেলার আগে ফলাফলটি ভালোভাবে দেখে নিন। Git stash ডকুমেন্টেশন

৩. পরিচ্ছন্ন worktree অপসারণ করুন

আপনার প্রয়োজনীয় পরিবর্তনগুলো কমিট বা স্ট্যাশ করার পরে, টার্গেট ডিরেক্টরি থেকে বের হয়ে আসুন এবং একই রিপোজিটরির অন্য একটি worktree থেকে অপসারণ কমান্ডটি চালান। git worktree list-এর দেওয়া হুবহু পাথটি ব্যবহার করুন:

cd "/path/to/main-repository"
git worktree remove "/path/to/finished-worktree"
git worktree list

দ্বিতীয়বার লিস্ট চেক করা একটি দরকারী নিশ্চিতকরণ যে Git আর সেই চেকআউটটিকে তালিকাভুক্ত করছে না। Git-এর নথিপত্র অনুসারে remove ডিফল্টভাবে কেবল পরিচ্ছন্ন worktree গ্রহণ করে; একটি আনট্র্যাকড ফাইল বা একটি ট্র্যাকড ফাইলের পরিবর্তন অপসারণে বাধা দিতে পারে। Git worktree ডকুমেন্টেশন

অপসারণের সময় যদি রিপোর্ট আসে যে worktree-টি পরিচ্ছন্ন নয়, তবে অবশিষ্ট প্রতিটি স্থানীয় ফাইল ফেলে দেওয়া যাবে বলে নিশ্চিত না হওয়া পর্যন্ত git worktree remove --force-এ যাবেন না। সেই worktree-তে ফিরে যান, git status পরীক্ষা করুন এবং প্রথমে অবশিষ্ট ফাইল বা পরিবর্তনগুলো সংরক্ষণ করুন। বিশেষ করে, স্ট্যাশে ইগনোর করা ফাইল অন্তর্ভুক্ত থাকে না, এবং একটি সাবমডিউলের নিজস্ব পরিবর্তন থাকতে পারে যার জন্য আলাদা মনোযোগ প্রয়োজন।

আপনি যদি আগেই Finder-এ ফোল্ডারটি মুছে ফেলে থাকেন

আপনি যদি Git-এর বাইরে কোনো লিঙ্কযুক্ত worktree ডিরেক্টরি মুছে ফেলেন, তবে এর প্রশাসনিক রেকর্ড থেকে যেতে পারে। মূল রিপোজিটরি থেকে, git worktree list চালান এবং অনুপস্থিত পাথটি prunable হিসেবে চিহ্নিত কি না তা পরীক্ষা করুন। যেসব worktree-র ডিরেক্টরি হারিয়ে গেছে সেগুলোর রেকর্ড অপসারণের জন্য Git git worktree prune সুবিধা দেয়; এটি মুছে ফেলা প্রজেক্ট ফাইলগুলো পুনরুদ্ধার করে না। ডিরেক্টরিটি সত্যিই মুছে গেছে এবং আপনার এর সামগ্রীর আর প্রয়োজন নেই তা নিশ্চিত করার পরেই এটি ব্যবহার করুন। ভবিষ্যতে পরিচ্ছন্নতার জন্য, git worktree remove ব্যবহার করুন যাতে Git অপসারণের অংশ হিসেবে worktree মেটাডেটা আপডেট করে নেয়। Git worktree ডকুমেন্টেশন

একটি নিরাপদ পরিচ্ছন্নতা সমাপ্ত হয় কাজ শেষ হওয়া চেকআউটটি অপসারণের মাধ্যমে, যে পরিবর্তনগুলো আপনি রাখতে চেয়েছেন তা কমিট বা স্ট্যাশ করার মাধ্যমে এবং আপনার প্রয়োজনীয় ইগনোর করা স্থানীয় ফাইলগুলো আলাদাভাবে সংরক্ষণ করার মাধ্যমে। যখনই আপনি নিশ্চিত হতে পারবেন না যে worktree-র অবশিষ্ট সামগ্রী ফেলে দেওয়ার যোগ্য কি না, তখনই worktree-টি যেমন আছে তেমনি রেখে দিন।

তথ্যসূত্র