আপনার বর্তমান ম্যাক প্রজেক্ট চেকআউটে কোনো ব্যাঘাত না ঘটিয়ে দ্বিতীয় একটি ব্রাঞ্চে কাজ করতে, পাশের একটি ফোল্ডারে গিট ওয়ার্কট্রি তৈরি করুন। মূল চেকআউটের সাথে রিপোজিটরি ডেটা শেয়ার করার পাশাপাশি প্রতিটি ওয়ার্কট্রির নিজস্ব ফাইল এবং চেকআউট করা ব্রাঞ্চ থাকে। টার্মিনাল থেকে এটি তৈরি করুন, ফাইন্ডার বা আপনার এডিটরে এর ফোল্ডারটি খুলুন এবং কাজ শেষ হলে গিট দিয়ে এটি সরিয়ে ফেলুন। গিটের ওয়ার্কট্রি ডকুমেন্টেশন

একটি ওয়ার্কট্রি কী পরিবর্তন করে

একটি ওয়ার্কট্রি আপনাকে একই গিট রিপোজিটরির সাথে সংযুক্ত আরেকটি ওয়ার্কিং ডিরেক্টরি প্রদান করে। এর মানে হলো, উদাহরণস্বরূপ, আপনি আপনার বর্তমান main চেকআউট খোলা রাখতে পারেন, যেখানে একটি ফিচার ব্রাঞ্চের জন্য থাকবে আলাদা ফোল্ডার এবং ফাইল। একটি ওয়ার্কিং ডিরেক্টরির পরিবর্তন অন্যটির চেকআউট করা ফাইলগুলোকে ওভাররাইট করে না। গিট রিপোজিটরি ডেটা শেয়ার করে, তবে ওয়ার্কট্রি-নির্দিষ্ট স্টেট যেমন ইনডেক্স এবং HEAD আলাদা রাখে। Git: git-worktree

ব্রাঞ্চগুলো সব ওয়ার্কট্রির মধ্যে শেয়ার করা থাকে, এবং সাধারণত একটি লোকাল ব্রাঞ্চ একসাথে দুটি ওয়ার্কট্রিতে চেকআউট করা যায় না। ওয়ার্কট্রি আলাদা ও সমান্তরাল কাজের জন্য উপযোগী; এগুলো কিন্তু স্বাধীন রিপোজিটরি ক্লোন নয়। গিট কর্তৃক উপেক্ষিত (ignored) ফাইলগুলো, যেমন লোকাল কনফিগারেশন বা বিল্ড আউটপুট, নতুন ফোল্ডারে আলাদাভাবে তৈরি করার প্রয়োজন হতে পারে।

macOS-এ একটি ফিচার ওয়ার্কট্রি তৈরি করুন

টার্মিনাল খুলুন এবং আপনার বিদ্যমান প্রজেক্ট ডিরেক্টরিতে যান। my-app-এর স্থলে আপনার রিপোজিটরির ডিরেক্টরির নাম দিন। এই উদাহরণে ধরে নেওয়া হয়েছে যে এটি ~/Projects/my-app-এ রয়েছে এবং এর পাশেই নতুন চেকআউটটি তৈরি করা হচ্ছে।

cd ~/Projects/my-app
git status --short
git worktree add -b feature/search-ui ../my-app-search-ui

স্ট্যাটাস কমান্ডের মাধ্যমে আপনি কনটেক্সট পরিবর্তনের আগে দেখে নিতে পারেন যে বর্তমান চেকআউটে কোনো অমীমাংসিত পরিবর্তন রয়েছে কিনা। add -b কমান্ডটি feature/search-ui নামের একটি নতুন লোকাল ব্রাঞ্চ তৈরি করে এবং পাশের my-app-search-ui ডিরেক্টরিতে সেটি চেকআউট করে। কোনো শুরুর কমিট নির্দিষ্ট করা না থাকলে গিট বর্তমান HEAD থেকেই ব্রাঞ্চ তৈরি করে। একটি অনন্য ব্রাঞ্চ এবং এমন একটি গন্তব্য পাথ বেছে নিন যা আগে থেকে ব্যবহৃত হচ্ছে না। Git: worktree add

আগে থেকেই বিদ্যমান এমন কোনো লোকাল ব্রাঞ্চ যা অন্য কোনো ওয়ার্কট্রিতে চেকআউট করা নেই, সেটির ক্ষেত্রে -b এবং নতুন ব্রাঞ্চ নামের পরিবর্তে সরাসরি এর নাম ব্যবহার করুন:

git worktree add ../my-app-search-ui existing-branch

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

ফাইন্ডার এবং আপনার এডিটরে নতুন চেকআউটটি খুলুন

ফাইন্ডারে, যে প্যারেন্ট ফোল্ডারে উভয় প্রজেক্ট ডিরেক্টরি রয়েছে সেখানে যান, তারপর my-app-search-ui খুলুন। আপনি ফাইন্ডারের গো টু ফোল্ডার (Go to Folder) কমান্ড (Shift-Command-G) ব্যবহার করে সম্পূর্ণ পাথ লিখতে পারেন, যেমন ~/Projects/my-app-search-ui। ফাইন্ডার বা আপনার এডিটরে ডিরেক্টরির নাম দৃশ্যমান রাখুন যাতে আপনি মূল চেকআউট থেকে এটিকে আলাদা করতে পারেন।

অ্যাপল ফাইন্ডার থেকে নির্দিষ্ট কোনো ফোল্ডারে টার্মিনাল খোলার নিয়মও উল্লেখ করেছে: View > Show Path Bar দিয়ে পাথ বারটি দেখান, পাথ বারে থাকা ফোল্ডারটিতে Control চেপে ক্লিক করুন, তারপর Open in Terminal বেছে নিন। আরেকটি টার্মিনাল উইন্ডো বা ট্যাব খুলতে Command-N বা Command-T ব্যবহার করুন। ফাইন্ডারের এই ক্রিয়াকলাপের মাধ্যমে নির্বাচিত ফোল্ডারটির অবস্থানই ওয়ার্কিং ডিরেক্টরি হয়ে যায়। অ্যাপল: ম্যাক-এ নতুন টার্মিনাল উইন্ডো এবং ট্যাব খুলুন

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

আপনি কোন চেকআউটটি ব্যবহার করছেন তা যাচাই করুন

যেকোনো একটি প্রজেক্ট ডিরেক্টরি থেকে চালান:

git worktree list

গিট মূল ওয়ার্কট্রি এবং লিঙ্কযুক্ত ওয়ার্কট্রিগুলোর পাথ এবং চেকআউট করা ব্রাঞ্চসহ একটি তালিকা প্রদর্শন করে। কমিট করার আগে বা ফাইল পরিবর্তন করে এমন কমান্ড চালানোর আগে, বর্তমান ফোল্ডারটি নিশ্চিত করুন বা সেখানে git status চালান। এই সহজ পরীক্ষাটি একটি সাধারণ ভুল এড়াতে সাহায্য করে—যেখানে কেউ নতুন চেকআউটে কাজ করতে গিয়ে ভুলবশত মূল চেকআউটেই এডিট করে ফেলে। Git: worktree list

কাজ শেষ হলে ওয়ার্কট্রি সরিয়ে ফেলুন

প্রথমে আপনার প্রয়োজনীয় যেকোনো কাজ কমিট করুন বা অন্য উপায়ে সংরক্ষণ করুন। তারপর, রিপোজিটরির অন্তর্গত যেকোনো ওয়ার্কট্রি থেকে পাথ উল্লেখ করে লিঙ্কযুক্ত চেকআউটটি সরিয়ে ফেলুন:

git worktree remove ../my-app-search-ui
git worktree list

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

আপনি যদি ম্যানুয়ালি কোনো ওয়ার্কট্রি ফোল্ডার মুছে ফেলেন, তবে গিট তার প্রশাসনিক রেকর্ড রেখে দিতে পারে। পুরনো রেকর্ডগুলো পরিষ্কার করতে git worktree prune ব্যবহার করুন; স্বাভাবিক পরিচ্ছন্নতার জন্য git worktree remove ব্যবহার করাই শ্রেয়। আপনি যদি ফাইন্ডারে কোনো লিঙ্কযুক্ত চেকআউট স্থানান্তর করেন, তবে গিট তার অবস্থান হারিয়ে ফেলতে পারে; প্রযোজ্য ক্ষেত্রে git worktree move অথবা পুনরায় সংযোগ করতে git worktree repair ব্যবহার করুন। Git: worktree prune, move, এবং repair

ম্যাকের জন্য একটি কার্যকর পদ্ধতি হলো প্রতিটি সক্রিয় কাজের জন্য একটি করে ওয়ার্কট্রি ফোল্ডার রাখা, যার ফোল্ডার ও ব্রাঞ্চের নাম হবে সংক্ষিপ্ত এবং সহজে চেনা যায় এমন। মূল চেকআউটটি তার বর্তমান কাজের জন্য রাখুন, সমান্তরাল কাজের জন্য একটি পাশাপাশি চেকআউট তৈরি করুন এবং এডিট করার আগে পাথটি যাচাই করে নিন। এর ফলে মূল চেকআউটের ব্রাঞ্চ বারবার পরিবর্তন না করেই প্রতিটি কাজ তার নিজস্ব প্রজেক্ট ফাইলে নির্বিঘ্নে সম্পন্ন করা যায়।

উৎসসমূহ