গিট রিপোজিটরিতে, ডিরেক্টরিটির সঠিক নামকরণ কীভাবে করা যায়?


652

আমার মনে হয় এটা ডিরেক্টরি পছন্দসই নাম দিয়ে একটি নতুন নির্দেশিকাতে পুনরায় নাম দেওয়ার কপি করতে, এবং কাজ করা উচিত পুরাতন ডিরেক্টরি মুছতে , এবং git add, git commitএবং pushসবকিছু। তবে এটি কি সেরা উপায়?


1
সম্ভাব্য সদৃশ:
গিটকে

5
যতদূর গিট সম্পর্কিত, একটি অনুলিপি এবং মুছে ফেলা একই পদক্ষেপ হিসাবে একই জিনিস। গিট একইভাবে (অনুলিপি + মুছুন) এবং (সরানো) উভয়ই রেকর্ড করবে।
ডায়েটারিচ এপ্প

উত্তর:


1178

প্রাথমিক নামকরণ (বা সরানো):

git mv <old name> <new name>

কেস সংবেদনশীল নাম — যেমন। থেকে casesensitiveআপনাকে CaseSensitiveঅবশ্যই দুটি ধাপ ব্যবহার করতে হবে:

git mv casesensitive tmp
git mv tmp CaseSensitive

( গিটের ক্ষেত্রে সংবেদনশীলতা সম্পর্কে আরও… )

… কমিট এবং পুশ এর পরে গিট রেপোতে ডিরেক্টরিটির নাম পরিবর্তন করার সহজ উপায়।


231
কিন্তু যদি আপনার কাছ থেকে নামান্তর করতে চান casesensitiveকরতে CaseSensitive: আপনি এভাবে কি করতে পারেন git mv casesensitive Tempএবং তারপর git mv Temp CaseSensitive
ViliusK

3
এটি সমস্ত লগ এবং পরিসংখ্যান সংরক্ষণ করে?
ওরেজভানি

23
@ উইলিউসকে যদি আপনি কেস সেনসিটিভ ডিরেক্টরিগুলি নিয়ে কাজ করে থাকেন git rm -rf --cached path/to/your/directoriesতবে যে সহজ উপায় আমি পেয়েছি তা আবার যুক্ত করুন এবং প্রতিশ্রুতিবদ্ধ
dtothefp

1
তবে কেন প্যাকেজ / ডিরেক্টরিতে নাম পরিবর্তনের জন্য জিআইটি-র যথাযথ সমর্থন নেই? কেন আমি এমনকি একটি পৃথক ফোল্ডার তৈরি করা প্রয়োজন। আমি যখন প্যাকেজের নাম পরিবর্তন করি তখন এটি কী ত্রুটি হিসাবে বিবেচনা করে এবং প্রতিশ্রুতি ও ধাক্কা দেওয়ার সময় এটির যত্ন নেওয়া উচিত?
আহমেদ

1
এটার জন্য অনেক ধন্যবাদ। আমার জন্য, আমাকে প্রথমে সম্পাদন করতে হবে git config core.ignorecase falseএবং তারপরে ক্রমানুসারে কমান্ডগুলি চালাতে হয়েছিল অন্যথায়, দ্বিতীয় অংশের জন্য আমি একটি source is emptyত্রুটি পেয়েছি ।
রিকা

106

যদি আপনি এই ত্রুটিটি পান: মারাত্মক: 'ফোল্ডারনাম' নামকরণ ব্যর্থ হয়েছে: অবৈধ যুক্তি

এটা চেষ্টা কর:

git mv foldername tempname && git mv tempname folderName


8
ডিরেক্টরিতে কেস-চেঞ্জ করার জন্য আমার ঠিক এটি দরকার ছিল।
সিজেসিরিও

টোকন '&&' এই সংস্করণে কোনও বৈধ বিবৃতি বিভাজক নয়। গিট সংস্করণ 2.11.0.windows।
টিম হার্ডি

@ টিম হার্ডি এটি দুটি পৃথক কমান্ড হিসাবে চালানো যেতে পারে git mv foldername tempnameএবং git mv tempname folderNameএটি উইন্ডোতে কাজ করা উচিত।
লার্কিথ

এটা কাজ করে না ! শেষের ফলাফলটি 'টেম্পনেম' ফোল্ডারের ভিতরে নতুন 'ফোল্ডারনাম' ফোল্ডারটি রাখবে
বেট করুন

61

1. একটি ফোল্ডারের নাম পুরানোফোল্ডার থেকে নতুন ফোল্ডারে পরিবর্তন করুন

git mv oldfolder newfolder

২. যদি নতুন ফোল্ডারটি ইতিমধ্যে আপনার সংগ্রহস্থলে থাকে এবং আপনি এটিকে ওভাররাইড করে ব্যবহার করতে চান: - বল প্রয়োগ করুন

git mv -f oldfolder newfolder

পরিবর্তনগুলি সূচকে যুক্ত করতে এবং গিট এমভি দিয়ে নাম পরিবর্তন করে প্রতিশ্রুতিবদ্ধ করতে ভুলবেন না।

৩. ক্ষেত্রে সংবেদনশীল ফাইল সিস্টেমে ফোল্ডারনেমে ফোল্ডারনেমের নামকরণ

সাধারণ এমভি কমান্ডের সাহায্যে সরল নামকরণ (গিট এমভি নয়) গিট থেকে ফাইলচেঞ্জ হিসাবে স্বীকৃতি পাবে না। আপনি যদি নিম্নলিখিত লাইনের মতো 'গিট এমভি' কমান্ড দিয়ে চেষ্টা করেন

git mv foldername folderName

যদি আপনি একটি কেস সংবেদনশীল ফাইল সিস্টেম ব্যবহার করেন, যেমন আপনি একটি ম্যাকের উপরে রয়েছেন এবং আপনি এটি কেস সংবেদনশীল হতে কনফিগার করেন নি, আপনি এই জাতীয় একটি ত্রুটি বার্তাটি অনুভব করবেন:

মারাত্মক: 'ফোল্ডারনাম' নামকরণ ব্যর্থ হয়েছে: অবৈধ যুক্তি

এটি কার্যকর করতে আপনি যা করতে পারেন তা এখানে:

git mv foldername tempname && git mv tempname folderName

এটি প্রথমে সম্পূর্ণ আলাদা ফোল্ডারনেমে ফোল্ডারটির নাম পরিবর্তন করে পুনরায় নামকরণ প্রক্রিয়াটি বিভক্ত করে। বিভিন্ন ফোল্ডারনেমে নামকরণের পরে ফোল্ডারটি শেষ পর্যন্ত নতুন ফোল্ডারনামে নামকরণ করা যেতে পারে। এই 'গিট এমভি'র পরে আবারও পরিবর্তনগুলি যুক্ত করতে এবং প্রতিশ্রুতিবদ্ধ করতে ভুলবেন না। যদিও এটি সম্ভবত কোনও সুন্দর কৌশল নয় তবে এটি পুরোপুরি সূক্ষ্মভাবে কাজ করে। ফাইল সিস্টেমটি এখনও অক্ষরের কেসগুলির একটি পরিবর্তনকে স্বীকৃতি দেবে না, তবে গিটটি এটি একটি নতুন ফোল্ডারনেমে নামকরণের কারণে করেছে এবং আমরা কেবল এটিই চেয়েছিলাম :)


9

আপনি ফাইল সিস্টেমটি ব্যবহার করে ডিরেক্টরিটির নাম পরিবর্তন করতে পারেন। তারপরে আপনি git rm <old directory>এবং git add <new directory>( সহায়তা পৃষ্ঠা ) করতে পারেন । তাহলে আপনি প্রতিশ্রুতিবদ্ধ এবং ধাক্কা দিতে পারেন।

গিট সনাক্ত করবে যে সামগ্রীগুলি একই এবং এটি কেবল একটি পুনর্নবীকরণ অপারেশন, এবং এটি ইতিহাসে পুনর্নবীকরণ প্রবেশের হিসাবে উপস্থিত হবে। প্রতিশ্রুতি ব্যবহারের আগে আপনি এটি পরীক্ষা করতে পারেনgit status


12
আরে, তবে এইভাবে, আমি পুরো প্রতিশ্রুতিবদ্ধ ইতিহাসটি ছেড়ে দেব।
ভিলিউস্ক

1
আপনি যদি এই শব্দটি ব্যবহার করেন তবে আপনি এটি ধরে রাখতে পারবেন।
ওলেক্সি

একের পরিবর্তে দুটি কমান্ড, এবং একটি পতাকা যুক্ত করতে হবে? এটি কোনও উপায়ে গিট এমভির চেয়ে ভাল?
এন্টেল

4
@ টপার নং, গিট এমভি হ'ল আরএম + অ্যাডের জন্য কেবলমাত্র একটি নাম। গিট এমভি ব্যবহার করা আরও ভাল সমাধান।
ওলেক্সি

5
@ টপার নোট করুন যে ফাইলটি সরানোর জন্য আপনি কোন পদ্ধতি ব্যবহার করেন তা বিবেচনা না করেই ইতিহাস দেখতে আপনাকে এখনও - ফলো ব্যবহার করতে হবে।
ওলেক্সি

3

ওয়েব অ্যাপ্লিকেশন থেকে আমি মনে করি আপনি পারবেন না, তবে আপনি গিট ক্লায়েন্টের সমস্ত ফোল্ডারটির নাম পরিবর্তন করতে পারেন, এটি প্রতিশ্রুতিবদ্ধ এবং দূরবর্তী সংগ্রহস্থলের দিকে ধাক্কা দেওয়ার পরিবর্তে নতুন ফাইল নামক ফোল্ডারে আপনার ফাইলগুলিকে সরিয়ে দেবে।

আমার খুব অনুরূপ একটি সমস্যা ছিল : আমাকে বড় ফোল্ডারগুলির ছোট বড় হাত থেকে ছোট হাতের নামকরণ করতে হয়েছিল (অ্যাবিসি -> এবিসি এর মতো), আমি সমস্ত ফোল্ডারটির নাম একটি ডামি নাম দিয়ে রেখেছি ('abc___' এর মতো) এবং দূরবর্তী সংগ্রহস্থলের প্রতি প্রতিশ্রুতিবদ্ধ না থেকে যে আমি সমস্ত ফোল্ডারটির নাম ছোট হাতের (আ.বি.সি.) দিয়ে মূল নামে রেখেছি এবং সেগুলি গ্রহণ করেছে!


0

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

পদক্ষেপ 1: এক্সপ্লোরার থেকে ফোল্ডারটির নতুন নামকরণ (কেস সেনসেটিভ) উদাহরণস্বরূপ ফোল্ডার 1 এর পরিবর্তে কেস সেনসেটিভ এই পরিবর্তনটি করুন।

পদক্ষেপ 2: এই নতুন নামযুক্ত ফোল্ডারটির নামকরণ (ফোল্ডার 1) প্রত্যাশিত কেস সংবেদনশীল নাম (কেস সেনসেটিভ) নামকরণ করুন উদাহরণস্বরূপ। ফোল্ডার 1 কে কেসসেনসেটিভ এ নামকরণ করুন। এই পরিবর্তন প্রতিশ্রুতিবদ্ধ।


0

কেস সংবেদনশীল নামকরণের git mv somefolder someFolderজন্য, আমার পক্ষে আগে কাজ করেছে তবে কোনও কারণে আজ হয়নি। সুতরাং একটি কার্যসংক্রান্ত হিসাবে আমি একটি নতুন ফোল্ডার তৈরি করা temp, এর সমস্ত সামগ্রী সরানো somefolderমধ্যে temp, মুছে ফেলা somefolder, প্রতিশ্রুতিবদ্ধ temp, তারপর নির্মিত someFolder, এর সমস্ত সামগ্রী সরানো tempমধ্যে someFolder, মুছে ফেলা temp, প্রতিশ্রুতিবদ্ধ এবং ধাক্কা someFolderএবং এটা কাজ! someFolderগিট হিসাবে দেখায়


-16

কেবল ফোল্ডারটির নাম পরিবর্তন করুন। গিটটি একটি "কন্টেন্ট-ট্র্যাকার", সুতরাং SHA1 হ্যাশগুলি একই এবং গিটটি জানে যে আপনি এটির নাম পরিবর্তন করেছেন। একমাত্র জিনিস যা পরিবর্তিত হয় তা হ'ল গাছ-বস্তু।

rm <directory>
git add .
git commit

1
এটি সবসময় কাজ করে না। এটি অবশ্যই আমার জন্য স্টেথের জন্য কাজ করে নি। 20% ফাইলের মতো ...
টোম ফেজেফার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.