macOS-এ স্ট্যাশ থেকে একটি ফাইল ফিরিয়ে আনতে, স্ট্যাশটিকে সোর্স হিসেবে এবং ফাইলের পাথটিকে টার্গেট হিসেবে ব্যবহার করে git restore চালান। এটি স্ট্যাশ এন্ট্রিটিকে অক্ষত রেখে সেই ফাইলটিকে আপনার ওয়ার্কিং ট্রিতে রিস্টোর করে। প্রথমে সঠিক স্ট্যাশটি চিহ্নিত করুন এবং এর পরিবর্তনগুলো পরীক্ষা করুন; তারপর নির্দিষ্ট পাথটি রিস্টোর করুন এবং ফলাফল পর্যালোচনা করুন।
১. রিপোজিটরিতে টার্মিনাল খুলুন
স্পটলাইট (Spotlight) বা ফাইন্ডারের (Finder) Applications/Utilities ফোল্ডার থেকে টার্মিনাল খুলুন, তারপর cd দিয়ে রিপোজিটরি ডিরেক্টরিতে যান। উদাহরণস্বরূপ, cd টাইপ করুন, প্রোজেক্ট ফোল্ডারটি টেনে টার্মিনাল উইন্ডোতে ছেড়ে দিন যাতে এর পাথটি ইনসার্ট হয়, এবং Return চাপুন। অ্যাপল টার্মিনালকে macOS-এর কমান্ড-লাইন ইন্টারফেস হিসেবে নথিবদ্ধ করেছে; এর ডিফল্ট শেল হলো zsh, তবে কোনো অ্যাডমিনিস্ট্রেটর বা ব্যবহারকারী চাইলে অন্য শেল কনফিগার করতে পারেন। ম্যাকে টার্মিনাল খুলুন বা বন্ধ করুন
কোনো কিছু রিস্টোর করার আগে নিশ্চিত করুন যে আপনি সঠিক রিপোজিটরিতে আছেন এবং স্থানীয় পরিবর্তনগুলো দেখে নিন:
git status --short
স্ট্যাশ থেকে রিস্টোর করলে তা টার্গেট ফাইলের বর্তমান ওয়ার্কিং-ট্রি কন্টেন্টকে প্রতিস্থাপন করতে পারে, তাই ফাইলের যে পরিবর্তনগুলো আপনার রাখা প্রয়োজন সেগুলো সেভ বা কমিট করে রাখুন। এই কাজটি নির্দিষ্ট পাথের ওপর কার্যকর হয়, তবে এটি কোনো মার্জ (merge) বা নিরাপদ ব্যাকআপ নয়।
২. স্ট্যাশটি খুঁজুন এবং পরীক্ষা করুন
উপলব্ধ এন্ট্রিগুলোর তালিকা দেখুন:
git stash list
গিট সবচেয়ে নতুন এন্ট্রিকে stash@{0}, পরেরটিকে stash@{1}, এভাবে লেবেল করে। আপনার কাঙ্ক্ষিত সংস্করণটি ধারণকারী এন্ট্রিটি বেছে নিন। যদি বিবরণগুলো অস্পষ্ট হয়, তবে একটি সম্ভাব্য এন্ট্রি প্যাচ (patch) হিসেবে পরীক্ষা করুন:
git stash show --patch 'stash@{0}'
stash@{0}-এর জায়গায় আপনার চিহ্নিত করা এন্ট্রিটি বসান। zsh-এ রেফারেন্সটি কোটেশনের মধ্যে রাখা সুবিধাজনক, কারণ ব্রেসগুলোর শেল সিনট্যাক্স রয়েছে। গিট কোনো স্ট্যাশ পরীক্ষা করার জন্য stash show এবং পুরো এন্ট্রি প্রয়োগ করার জন্য stash apply নথিবদ্ধ করেছে; নিচের কমান্ডটি এর পরিবর্তে স্ট্যাশ স্ন্যাপশট থেকে কেবল একটি একক পাথ বেছে নেয়। git-stash সংক্রান্ত নথি
৩. কেবল ফাইলটি রিস্টোর করুন
স্ট্যাশ রেফারেন্সটিকে সোর্স হিসেবে এবং ---এর পরে রিপোজিটরির সাপেক্ষে ফাইলের পাথ দিয়ে git restore চালান:
git restore --source='stash@{0}' -- 'src/config.json'
ফরওয়ার্ড স্ল্যাশ ব্যবহার করে এবং রিপোজিটরির রুটের সাপেক্ষে লিখে src/config.json-এর জায়গায় আপনার প্রয়োজনীয় সঠিক পাথটি দিন। কোটেশন ব্যবহারের ফলে স্পেস এবং ওয়াইল্ডকার্ড ক্যারেক্টারগুলো শেল দ্বারা ইন্টারপ্রেট হওয়া থেকেও রক্ষা পায়। --source অপশনটি বিষয়বস্তুর উৎস হিসেবে একটি কমিট বা ট্রি নির্বাচন করে; pathspec নির্দিষ্ট করে দেয় গিট কোন পাথটি রিস্টোর করবে। যেহেতু --staged বাদ দেওয়া হয়েছে, তাই গিট ওয়ার্কিং ট্রি রিস্টোর করে এবং ইনডেক্সকে অপরিবর্তিত রাখে। git-restore সংক্রান্ত নথি
এখন পরিবর্তনটি পর্যালোচনা করুন:
git status --short
git diff -- 'src/config.json'
সাধারণ ক্ষেত্রে রিস্টোর করা সংস্করণটি ইনডেক্সের সাপেক্ষে একটি আনস্টেজিড (unstaged) ওয়ার্কিং-ট্রি পরিবর্তন। ফাইলটি যদি আগে থেকেই স্টেজ করা থাকে, তবে স্টেজ বা কমিট করার আগে ওয়ার্কিং-ট্রি এবং ইনডেক্স সংস্করণগুলো সতর্কতার সাথে তুলনা করুন। স্ট্যাশটি স্ট্যাশ তালিকাতেই থেকে যায় কারণ git restore পুরো এন্ট্রি প্রয়োগ বা মুছে না ফেলে কেবল তা থেকে তথ্য রিড করে।
এই কর্মপদ্ধতিতে কখন সমন্বয় প্রয়োজন
পাথটি অবশ্যই স্ট্যাশের ওয়ার্কিং-ট্রি স্ন্যাপশটে বিদ্যমান থাকতে হবে। যদি তা না থাকে, তবে গিট রিপোর্ট করতে পারে যে pathspec মেলেনি; সেক্ষেত্রে ক্যাপিটালাইজেশনসহ প্যাচ এবং ফাইলের নাম পরীক্ষা করুন। ট্র্যাক করা কোনো পাথ যদি সোর্স ট্রিতে অনুপস্থিত থাকে, তবে টার্গেটকে সেই ট্রির সাথে মেলাতে গিয়ে তা মুছে ফেলা হতে পারে, তাই স্ট্যাশে কোনো কিছু ডিলিট করার রেকর্ড থাকলে বিশেষভাবে সতর্ক থাকুন। গিটের restore নথিতে এই আচরণটি বর্ণনা করা হয়েছে। git-restore সংক্রান্ত নথি
এই পদ্ধতিটি স্ট্যাশের ট্র্যাক করা ওয়ার্কিং-ট্রি স্ন্যাপশটে অন্তর্ভুক্ত ফাইলের জন্য প্রযোজ্য। -u বা -a দিয়ে তৈরি স্ট্যাশে আনট্র্যাকড বা ইগনোর করা ফাইলও থাকতে পারে, যা আলাদাভাবে সংরক্ষিত হয়; git restore --source='stash@{0}' সেই আলাদা স্ন্যাপশটটিকে মূল স্ট্যাশ ট্রির মতো ব্যবহার করে না। এই ধরণের এন্ট্রিগুলো সাবধানে পরীক্ষা করুন এবং এই কমান্ডটি সেগুলো ফিরিয়ে আনবে ধরে নেওয়ার পরিবর্তে গিটের নথিভুক্ত স্ট্যাশ পরিদর্শন এবং পুনরুদ্ধারের নিয়ন্ত্রণগুলো ব্যবহার করুন। git-stash সংক্রান্ত নথি
উদ্দেশ্য যদি পুরো ফাইলের পরিবর্তে নির্বাচিত কিছু লাইন প্রয়োগ করা হয়, তবে git restore -p ইন্টারঅ্যাক্টিভ হাঙ্ক (hunk) নির্বাচনের সুবিধা দেয়, তবে এর ওপর নির্ভর করার আগে আপনার ইনস্টল করা গিট সংস্করণের আচরণ এবং সোর্স নিশ্চিত করে নিন। একটি ফাইলের স্টেজড এবং ওয়ার্কিং-ট্রি উভয় সংস্করণ রিস্টোর করতে git restore কমান্ডটি --staged এবং --worktree উভয়টিই সমর্থন করে; এটি ইনডেক্সকেও পরিবর্তন করে, তাই কেবল উদ্দেশ্যমূলক হলেই এটি ব্যবহার করুন। git-restore সংক্রান্ত নথি
ব্যবহারিক ধাপগুলো হলো: স্ট্যাশটি চিহ্নিত করুন, এর বিষয়বস্তুর মধ্যে ফাইলটি নিশ্চিত করুন, নির্বাচিত স্ট্যাশ থেকে রিপোজিটরি-সাপেক্ষ একটি পাথ রিস্টোর করুন এবং এগিয়ে যাওয়ার আগে diff পরীক্ষা করুন। এটি স্ট্যাশটিকে অক্ষত রাখে এবং রিস্টোর প্রক্রিয়াটিকে আপনার নির্দিষ্ট করা পাথের মধ্যেই সীমাবদ্ধ রাখে।
উৎস
git-stash সংক্রান্ত নথি — Git
ম্যাকে টার্মিনাল খুলুন বা বন্ধ করুন — Apple Support