আমার মনে হয় এটা ডিরেক্টরি পছন্দসই নাম দিয়ে একটি নতুন নির্দেশিকাতে পুনরায় নাম দেওয়ার কপি করতে, এবং কাজ করা উচিত পুরাতন ডিরেক্টরি মুছতে , এবং git add
, git commit
এবং push
সবকিছু। তবে এটি কি সেরা উপায়?
আমার মনে হয় এটা ডিরেক্টরি পছন্দসই নাম দিয়ে একটি নতুন নির্দেশিকাতে পুনরায় নাম দেওয়ার কপি করতে, এবং কাজ করা উচিত পুরাতন ডিরেক্টরি মুছতে , এবং git add
, git commit
এবং push
সবকিছু। তবে এটি কি সেরা উপায়?
উত্তর:
প্রাথমিক নামকরণ (বা সরানো):
git mv <old name> <new name>
কেস সংবেদনশীল নাম — যেমন। থেকে casesensitive
আপনাকে CaseSensitive
অবশ্যই দুটি ধাপ ব্যবহার করতে হবে:
git mv casesensitive tmp
git mv tmp CaseSensitive
( গিটের ক্ষেত্রে সংবেদনশীলতা সম্পর্কে আরও… )
… কমিট এবং পুশ এর পরে গিট রেপোতে ডিরেক্টরিটির নাম পরিবর্তন করার সহজ উপায়।
casesensitive
করতে CaseSensitive
: আপনি এভাবে কি করতে পারেন git mv casesensitive Temp
এবং তারপর git mv Temp CaseSensitive
git rm -rf --cached path/to/your/directories
তবে যে সহজ উপায় আমি পেয়েছি তা আবার যুক্ত করুন এবং প্রতিশ্রুতিবদ্ধ
git config core.ignorecase false
এবং তারপরে ক্রমানুসারে কমান্ডগুলি চালাতে হয়েছিল অন্যথায়, দ্বিতীয় অংশের জন্য আমি একটি source is empty
ত্রুটি পেয়েছি ।
যদি আপনি এই ত্রুটিটি পান: মারাত্মক: 'ফোল্ডারনাম' নামকরণ ব্যর্থ হয়েছে: অবৈধ যুক্তি
এটা চেষ্টা কর:
git mv foldername tempname && git mv tempname folderName
git mv foldername tempname
এবং git mv tempname folderName
এটি উইন্ডোতে কাজ করা উচিত।
1. একটি ফোল্ডারের নাম পুরানোফোল্ডার থেকে নতুন ফোল্ডারে পরিবর্তন করুন
git mv oldfolder newfolder
২. যদি নতুন ফোল্ডারটি ইতিমধ্যে আপনার সংগ্রহস্থলে থাকে এবং আপনি এটিকে ওভাররাইড করে ব্যবহার করতে চান: - বল প্রয়োগ করুন
git mv -f oldfolder newfolder
পরিবর্তনগুলি সূচকে যুক্ত করতে এবং গিট এমভি দিয়ে নাম পরিবর্তন করে প্রতিশ্রুতিবদ্ধ করতে ভুলবেন না।
৩. ক্ষেত্রে সংবেদনশীল ফাইল সিস্টেমে ফোল্ডারনেমে ফোল্ডারনেমের নামকরণ
সাধারণ এমভি কমান্ডের সাহায্যে সরল নামকরণ (গিট এমভি নয়) গিট থেকে ফাইলচেঞ্জ হিসাবে স্বীকৃতি পাবে না। আপনি যদি নিম্নলিখিত লাইনের মতো 'গিট এমভি' কমান্ড দিয়ে চেষ্টা করেন
git mv foldername folderName
যদি আপনি একটি কেস সংবেদনশীল ফাইল সিস্টেম ব্যবহার করেন, যেমন আপনি একটি ম্যাকের উপরে রয়েছেন এবং আপনি এটি কেস সংবেদনশীল হতে কনফিগার করেন নি, আপনি এই জাতীয় একটি ত্রুটি বার্তাটি অনুভব করবেন:
মারাত্মক: 'ফোল্ডারনাম' নামকরণ ব্যর্থ হয়েছে: অবৈধ যুক্তি
এটি কার্যকর করতে আপনি যা করতে পারেন তা এখানে:
git mv foldername tempname && git mv tempname folderName
এটি প্রথমে সম্পূর্ণ আলাদা ফোল্ডারনেমে ফোল্ডারটির নাম পরিবর্তন করে পুনরায় নামকরণ প্রক্রিয়াটি বিভক্ত করে। বিভিন্ন ফোল্ডারনেমে নামকরণের পরে ফোল্ডারটি শেষ পর্যন্ত নতুন ফোল্ডারনামে নামকরণ করা যেতে পারে। এই 'গিট এমভি'র পরে আবারও পরিবর্তনগুলি যুক্ত করতে এবং প্রতিশ্রুতিবদ্ধ করতে ভুলবেন না। যদিও এটি সম্ভবত কোনও সুন্দর কৌশল নয় তবে এটি পুরোপুরি সূক্ষ্মভাবে কাজ করে। ফাইল সিস্টেমটি এখনও অক্ষরের কেসগুলির একটি পরিবর্তনকে স্বীকৃতি দেবে না, তবে গিটটি এটি একটি নতুন ফোল্ডারনেমে নামকরণের কারণে করেছে এবং আমরা কেবল এটিই চেয়েছিলাম :)
আপনি ফাইল সিস্টেমটি ব্যবহার করে ডিরেক্টরিটির নাম পরিবর্তন করতে পারেন। তারপরে আপনি git rm <old directory>
এবং git add <new directory>
( সহায়তা পৃষ্ঠা ) করতে পারেন । তাহলে আপনি প্রতিশ্রুতিবদ্ধ এবং ধাক্কা দিতে পারেন।
গিট সনাক্ত করবে যে সামগ্রীগুলি একই এবং এটি কেবল একটি পুনর্নবীকরণ অপারেশন, এবং এটি ইতিহাসে পুনর্নবীকরণ প্রবেশের হিসাবে উপস্থিত হবে। প্রতিশ্রুতি ব্যবহারের আগে আপনি এটি পরীক্ষা করতে পারেনgit status
ওয়েব অ্যাপ্লিকেশন থেকে আমি মনে করি আপনি পারবেন না, তবে আপনি গিট ক্লায়েন্টের সমস্ত ফোল্ডারটির নাম পরিবর্তন করতে পারেন, এটি প্রতিশ্রুতিবদ্ধ এবং দূরবর্তী সংগ্রহস্থলের দিকে ধাক্কা দেওয়ার পরিবর্তে নতুন ফাইল নামক ফোল্ডারে আপনার ফাইলগুলিকে সরিয়ে দেবে।
আমার খুব অনুরূপ একটি সমস্যা ছিল : আমাকে বড় ফোল্ডারগুলির ছোট বড় হাত থেকে ছোট হাতের নামকরণ করতে হয়েছিল (অ্যাবিসি -> এবিসি এর মতো), আমি সমস্ত ফোল্ডারটির নাম একটি ডামি নাম দিয়ে রেখেছি ('abc___' এর মতো) এবং দূরবর্তী সংগ্রহস্থলের প্রতি প্রতিশ্রুতিবদ্ধ না থেকে যে আমি সমস্ত ফোল্ডারটির নাম ছোট হাতের (আ.বি.সি.) দিয়ে মূল নামে রেখেছি এবং সেগুলি গ্রহণ করেছে!
আমি দুটি পদক্ষেপে এটি সমাধান। এমভি কমান্ড ব্যবহার করে ফোল্ডারটির নতুন নামকরণের জন্য আপনার এমন অধিকারের দরকার আছে, যদি আপনার অধিকার না থাকে তবে আপনি এই পদক্ষেপগুলি অনুসরণ করতে পারেন। মনে করুন আপনি কেস সেনসেটিভ কেস সংবেদনশীল নামকরণ করতে চান।
পদক্ষেপ 1: এক্সপ্লোরার থেকে ফোল্ডারটির নতুন নামকরণ (কেস সেনসেটিভ) উদাহরণস্বরূপ ফোল্ডার 1 এর পরিবর্তে কেস সেনসেটিভ এই পরিবর্তনটি করুন।
পদক্ষেপ 2: এই নতুন নামযুক্ত ফোল্ডারটির নামকরণ (ফোল্ডার 1) প্রত্যাশিত কেস সংবেদনশীল নাম (কেস সেনসেটিভ) নামকরণ করুন উদাহরণস্বরূপ। ফোল্ডার 1 কে কেসসেনসেটিভ এ নামকরণ করুন। এই পরিবর্তন প্রতিশ্রুতিবদ্ধ।
কেস সংবেদনশীল নামকরণের git mv somefolder someFolder
জন্য, আমার পক্ষে আগে কাজ করেছে তবে কোনও কারণে আজ হয়নি। সুতরাং একটি কার্যসংক্রান্ত হিসাবে আমি একটি নতুন ফোল্ডার তৈরি করা temp
, এর সমস্ত সামগ্রী সরানো somefolder
মধ্যে temp
, মুছে ফেলা somefolder
, প্রতিশ্রুতিবদ্ধ temp
, তারপর নির্মিত someFolder
, এর সমস্ত সামগ্রী সরানো temp
মধ্যে someFolder
, মুছে ফেলা temp
, প্রতিশ্রুতিবদ্ধ এবং ধাক্কা someFolder
এবং এটা কাজ! someFolder
গিট হিসাবে দেখায়
কেবল ফোল্ডারটির নাম পরিবর্তন করুন। গিটটি একটি "কন্টেন্ট-ট্র্যাকার", সুতরাং SHA1 হ্যাশগুলি একই এবং গিটটি জানে যে আপনি এটির নাম পরিবর্তন করেছেন। একমাত্র জিনিস যা পরিবর্তিত হয় তা হ'ল গাছ-বস্তু।
rm <directory>
git add .
git commit