আমি গিটের ক্ষেত্রে কেবল কেস-সংবেদনশীল ফাইলের নাম পরিবর্তন করব?


1300

আমি কিছু ফাইল নাম পরিবর্তিত হয়েছে হিসেবে প্রথম চিঠি, ডি পুঁজিতে Name.jpgকরার name.jpg। গিট এই পরিবর্তনগুলি স্বীকার করে না এবং আমাকে ফাইলগুলি মুছতে এবং সেগুলি আবার আপলোড করতে হয়েছিল। ফাইলের নাম পরিবর্তন করার জন্য পরীক্ষা করার সময় গিট কি কেস-সংবেদনশীল হতে পারে? আমি নিজেই ফাইলটিতে কোনও পরিবর্তন করি নি।


4
@ যদি এটি পুরোপুরি সঠিক না হয় তবে গিটের আসলে একটি কনফিগারেশন সেটিংস রয়েছে যা এটি কেস সংবেদনশীলতা উপেক্ষা করে কিনা তা নিয়ন্ত্রণ করে।


6
স্ট্যাকওভারফ্লো. com/a/ 24979063 / 6309 দেখুন : গিট 2.0.0 থেকে, একটি সহজ git mvকাজ।
ভোনসি


এই পোস্টটি দেখুন। আমি প্রতিশ্রুতিবদ্ধ করতে সক্ষম হয়েছি কিন্তু পরামিতি হিসাবে কোনও ফাইল পাথ ছাড়াই গিট কমিট-এম "msg" ব্যবহার করেছি। এটি সূচক আপডেট করে এবং ফাইলটি চেক করে। [Link] stackoverflow.com/questions/35790113/...
ARKS

উত্তর:


1512

আপনি গিট এমভি ব্যবহার করতে পারেন :

git mv -f OldFileNameCase newfilenamecase

12
এটি আমাকে 'উত্স ডিরেক্টরিটি ফাঁকা' দেয় যখন তা নয়
বুদ্ধিমান স্ট্রবেরি

6
এখানে MacOS ব্যবহার করে (কেস-সংবেদনশীল এফএস) এবং -f কাজ করেছে!
টিপটির

49
সাম্প্রতিক সংস্করণগুলিতে, আপনার আর -fপতাকা লাগবে না ।
জোশুয়া পিন্টার

8
পুরো ফাইল পাথ দিতে ভুলবেন না। স্পষ্টতই, আমি জানি, তবে কিছুক্ষণের জন্য পেয়েছি
রিক্রিজো

7
শীর্ষ মন্তব্য ভোট করার জন্য: আপনি কি প্রয়োজন -fসর্বশেষ Git (2.18) সঙ্গে সুইচ অন্যথায় আপনি পেতে পারে fatal: destination existsত্রুটি।
ডিপস্পেস 101

1035

Git এটি বলে একটি কনফিগারেশন সেটিং ক্ষেত্রে সংবেদনশীল বা অবশ হতে কিনা রয়েছে: core.ignorecase। গিট কে কেস-সংবেদনশীল হতে বলার জন্য, কেবল এই সেটিংসটি এতে সেট করুন false:

git config core.ignorecase false

নথিপত্র

git configডকুমেন্টেশন থেকে :

core.ignorecase

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

ডিফল্টটি মিথ্যা, গিট-ক্লোন (1) বা গিট-থার (1) ব্যতীত প্রোপোজ করা হবে এবং core.ignorecaseসঠিক তৈরি করা হবে যখন সংগ্রহস্থলটি তৈরি করা হবে।

কেস-সংবেদনশীল ফাইল-সিস্টেম

আমি জানি যে দুটি সবচেয়ে জনপ্রিয় অপারেটিং সিস্টেমগুলি কেস-সংবেদনশীল ফাইল সিস্টেমগুলির মধ্যে রয়েছে

  • উইন্ডোজ
  • ওএস এক্স

9
সাইড নোটে, আমি মনে করি না যে ম্যাক ওএস এক্স নিজেই কেস-সংবেদনশীল। পরিবর্তে, এটি ফাইল-সিস্টেম যা কেস-সংবেদনশীলতা নির্ধারণ করে। এইচএফএস + পার্টিশনের ফর্ম্যাট করার সময় ব্যবহারকারীরা এটিকে কেস-সংবেদনশীল বা সংবেদনশীল না করা উচিত তা চয়ন করতে পারেন। কেস কেস-সংবেদনশীল হ'ল ডিফল্ট।
spaaarky21

225
এই উত্তরে উল্লেখ করার পক্ষে এটি খুব মূল্যবান বলে মনে হচ্ছে যে falseকেস-সংবেদনশীল ফাইল সিস্টেমে এই বিকল্পটি সেট করা একটি খারাপ ধারণা । এটি অগত্যা সুস্পষ্ট নয়। উদাহরণস্বরূপ, আমি আমার ম্যাকের উপরে এটি চেষ্টা করেছিলাম, ভেবেছিলাম এটি আমার সমস্যার সমাধান করবে, তারপরে একটি ফাইলের নাম পরিবর্তন productPageCtrl.jsকরে ProductPageCtrl.jsgit statusএকটি দেখলাম নতুন ফাইল নামক ProductPageCtrl.jsকিন্তু করা হয়নি মনে করে যে, productPageCtrl.jsমুছে ফেলা হয়েছে। আমি যখন নতুন ফাইল যুক্ত করেছি, প্রতিশ্রুতিবদ্ধ এবং গিটহাবের দিকে ধাক্কা দিয়েছি, তখন গিটহাব রেপোতে উভয় ফাইল রয়েছে যদিও আমার (সম্ভবত আপ টু ডেট) স্থানীয় রেপো কেবল একটিই ছিল।
মার্ক আমেরিকা

5
@ মারক্যামেরি এটি আপনার গিট ক্লায়েন্টের বাগের মতো অনেকটা শোনাচ্ছে। আপনি একটি রিপোর্ট দায়ের করেছেন?
ডোমি

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

15
@Domi Git হয় স্মার্ট যথেষ্ট। সংবেদনশীল ফাইল সিস্টেমের ক্ষেত্রে আপনি কেন এটি মিথ্যা হিসাবে সেট করবেন না তা জানায়। git mvফাইলটি সরানোর জন্য ব্যবহার করুন এবং গিটটি কীভাবে এটি পরিচালনা করে তা দেখুন। যদি আপনি গিট ছাড়াই ফাইলটি সরান, ফাইল সিস্টেম সত্যকে গিট না বলায় গিট কিছুই করতে পারে না। এটি এনটিএফএস / ফ্যাট / এইচএফএস এবং অনুরূপ এবং গিট / লিনাক্সের সমস্যা নয়।
ohcibi

157

সোর্স ট্রি ব্যবহার করে আমি ইউআই থেকে এই সব করতে সক্ষম হয়েছি

  1. নাম পরিবর্তন FILE.ext করুনwhatever.ext
  2. ফাইলটি স্টেজ করুন
  3. এখন নামকরণ whatever.ext করুনfile.ext
  4. ফাইলটি আবার স্টেজ করুন

এটি কিছুটা ক্লান্তিকর তবে আপনার যদি কেবল কয়েকটি ফাইলে এটি করা দরকার তবে এটি খুব দ্রুত


5
গিট
ব্যাশের

3
"ফাইলটি স্টেজ করা" একটি গুরুত্বপূর্ণ অংশ - উপরের অন্যান্য উত্তরগুলির মধ্যে কোনওটিই আমার পক্ষে কাজ করেনি। এটি প্রকৃতপক্ষে পুরানো উইন্ডোজ কমান্ড প্রম্পটের সাথে কাজ করেছে।
ভ্লাদ সবেভ

1
আমি মঞ্চ অঞ্চলের মাধ্যমে এটি কাজ বুঝতে পারিনি। তবে আমার ক্ষেত্রে, আমি ফোল্ডারগুলির নামগুলি পাশাপাশি সেই ফোল্ডারগুলির মধ্যে কিছু ফাইল সংশোধন করতে চেয়েছিলাম। তাই আমি প্রথমে সমস্ত ফোল্ডারগুলির নাম অস্থায়ী নামে রেখেছি। নতুন নামগুলি (সমস্ত ফাইলের মধ্যে থাকা) এবং "মুছে ফেলা" ফাইলগুলি প্রতিশ্রুতিবদ্ধ। গিট তাদের সকলকে "পুনঃনামযুক্ত" হিসাবে পতাকাঙ্কিত করেছে। তারপরে all সমস্ত ফোল্ডারকে তাদের নতুন কেস সংস্করণে পুনরায় নামকরণ করে আবার প্রতিশ্রুতিবদ্ধ। অবশেষে, এই 2 টি কমিটকে একীভূত করুন। তবে আপনি যা লিখেছেন তার উপর ভিত্তি করে আমি 2 টি কমিট + মার্জ তৈরি না করে সরাসরি উপস্থাপনের ক্ষেত্রের মাধ্যমে পুরো জিনিসটি করতে পারতাম।
থার্মোক্স

3
ফোল্ডারের নামে গিটক্রেন দিয়েও কাজ করে।
ফিলিপ ম্যাট্রে

এই ক্লান্তিকর কাজটি করার জন্য আমি পাইথন 3 স্ক্রিপ্ট লিখেছিলাম: stackoverflow.com/a/58159822/4934640
ব্যবহারকারী

126

এটি আমি ওএস এক্সে করেছিলাম:

git mv File file.tmp
git mv file.tmp file

দুটি পদক্ষেপ কারণ অন্যথায় আমি একটি "ফাইল বিদ্যমান" ত্রুটি পেয়েছি। সম্ভবত এটি যোগ --cachedবা এই জাতীয় দ্বারা এক পদক্ষেপে সম্পন্ন করা যেতে পারে ।


21
শীর্ষের উত্তর হিসাবে বোঝা যাচ্ছে, -f(বল) আপনি যে পতাকাটি সন্ধান করছেন তা হল
rperryng

5
@ আর্পেরিং - না, -fঅন্তর্নিহিত এফএস ক্ষেত্রে সংবেদনশীল না হলে পতাকাটি সাহায্য করবে না। তবে, দ্বি-পদক্ষেপের সমাধানটি আমার পক্ষে কাজ করেছে
হেক্টো

কেস-সংবেদনশীল এফএস ব্যবহার করে (ম্যাকে) এবং -fকাজ করেছেন!
টিপটির

এটি -fপতাকা ছাড়াই উইন্ডোজের ফোল্ডারেও কাজ করেছিল ।
নিচ

git -c "core.ignorecase=false" add .ফাইলগুলির বিষয়ে বিবেচনা করবে যার প্রতিশ্রুতিবদ্ধতার জন্য কেস পরিবর্তিত হয়েছে।
nietonfir

67

গিটের ক্ষেত্রে সংবেদনশীলতা সাময়িকভাবে পরিবর্তন করতে এটি কখনও কখনও দরকারী :

পদ্ধতি # 1 - একক আদেশের ক্ষেত্রে কেস সংবেদনশীলতা পরিবর্তন করুন:

git -c core.ignorecase=true checkout mybranchএকক checkoutকমান্ডের জন্য কেস-সংবেদনশীলতা বন্ধ করতে । অথবা আরো সাধারণভাবে: । (মন্তব্যে এ পরামর্শ দেওয়ার জন্য ভনিকে ক্রেডিট করুন।)git -c core.ignorecase= <<true or false>> <<command>>

পদ্ধতি # 2 - একাধিক আদেশের ক্ষেত্রে কেস সংবেদনশীলতা পরিবর্তন করুন:

দীর্ঘ সময়ের জন্য সেটিংস পরিবর্তন করতে (যেমন যদি এটি পরিবর্তন করার আগে একাধিক কমান্ড চালানো দরকার):

  1. git config core.ignorecase(এটি বর্তমান সেটিংসটি প্রদান করে, যেমন false)।
  2. git config core.ignorecase <<true or false>> - পছন্দসই নতুন সেটিংস সেট করুন।
  3. ... একাধিক অন্যান্য কমান্ড চালান ...
  4. git config core.ignorecase <<false or true>> - পূর্ববর্তী সেটিংসে কনফিগার মানটি সেট করুন।

1
সরাসরি কেন নয় git -c core.ignorecase=<true or false> checkout <<branch>>? এর পরে রিসেট করার মতো কিছুই নেই।
ভনসি

2
লোয়ারকেস থেকে বড় হাতের বদলে বড় হাতের পরিবর্তনের সময় আমি প্রস্তাবিত কোর.ইনোররেসেসের কাজ করার এক অদ্ভুত অভিজ্ঞতা পেয়েছি তবে বড় হাতের অক্ষরে ছোট হাতের অক্ষরে নয় for মনে হয় একমাত্র নির্ভরযোগ্য সমাধান হ'ল একটি OS ব্যবহার বন্ধ করা যা ফাইলনামের কেসটি সনাক্ত করতে ব্যর্থ হয়।
উচ্চাভিলাষী

এটি একটি অস্থায়ী পরিবর্তন হওয়া উচিত কারণ আছে? যদি আমি কেবল সেটিংসকে সংবেদনশীল ক্ষেত্রে পরিবর্তন করে ফেলে রাখি তবে এটি কোনও সমস্যার কারণ হতে পারে?
cytsunny

এটি কয়েকটি কারণের উপর নির্ভর করে, বিশেষত লক্ষ্য ফাইল সিস্টেমটি কেস সংবেদনশীল কিনা - en.wikedia.org/wiki/Case_ حساس তা# In_files সিস্টেমে দেখুন । অস্থায়ী পরিবর্তন প্রয়োজন হতে পারে যদি ডিপ্লোমেন্ট ফাইল সিস্টেমের বিকাশের জন্য ব্যবহৃত ফাইল সিস্টেমের ক্ষেত্রে বিভিন্ন ক্ষেত্রে সংবেদনশীলতা থাকে। এছাড়াও আমার ক্ষেত্রে আমি এমন একটি দলে কাজ করি যেখানে প্রত্যেকেরই একই গিট সেটিংস (যেমন কেস সেনসিটিভ) থাকবে বলে আশা করা হয় তাই আমি যদি এটি বন্ধ করি তবে এটি অস্থায়ী হওয়া উচিত।
স্টিভ চেম্বারস

44

ওএসএক্সের অধীনে, এই সমস্যাটি এড়াতে এবং কেস-সংবেদনশীল ফাইল সিস্টেমের বিকাশে অন্যান্য সমস্যাগুলি এড়াতে, আপনি কেস সংবেদনশীল ভার্চুয়াল ড্রাইভ / ডিস্ক চিত্র তৈরি করতে ডিস্ক ইউটিলিটি ব্যবহার করতে পারেন ।

ডিস্কের ইউটিলিটি চালান, নতুন ডিস্ক চিত্র তৈরি করুন এবং নিম্নলিখিত সেটিংসটি ব্যবহার করুন (বা আপনার পছন্দ মতো পরিবর্তন করুন তবে এটি সংবেদনশীল রাখুন):

ম্যাক ডিস্ক ইউটিলিটি স্ক্রিনশট

গিটকে নিশ্চিত করে নিশ্চিত করুন যে এটি এখন কোনও সংবেদনশীল এফএসে রয়েছে:

git config core.ignorecase false

15
না, পারমাণবিক ওএসএক্স-এ সম্পূর্ণরূপে সংবেদনশীল বুট ড্রাইভ চালাচ্ছে। আপনাকে খারাপভাবে লিখিত (আহেম, অ্যাডোব) অ্যাপ্লিকেশন ব্যতীত বাঁচতে হবে, বা তাদের নিজস্ব-বোকা ভিএম চালানো হবে, তবে আপনি যদি মূলত * নিক্স সিস্টেমের কোড করেন তবে তা মূল্যবান।
মাইক মারকাচি

1
এটি একমাত্র বিকল্প যা সঠিকভাবে কাজ করে। আমি বিশ্রামটি চেষ্টা করেছি এবং আপনি একরকম বা অন্যভাবে একটি আচার দিয়ে শেষ করেছেন। এটি করে সমস্যার সঠিকভাবে সমাধান করুন।
জন হান্ট

2
নোট করুন যে ডিস্ক ইউটিলিটির একটি ওএস এক্স 10.11 বাগ রয়েছে - এটি কেস সংবেদনশীল চিত্র তৈরি করবে না। আপনার কমান্ড লাইন সরঞ্জাম hdiutil ব্যবহার করা উচিত। আপেল.স্ট্যাকেক্সেঞ্জার.কম
সেকশনগুলি /

7
হাই সিয়েরায় এপিএফএসের সাথে এটি আরও সহজ। প্লাস সহ ড্রাইভের আইকনটি ক্লিক করুন এবং আকারের কোনও সীমা ছাড়াই কেস-সংবেদনশীল ভলিউম যুক্ত করুন। এটি কেবলমাত্র মূল ভলিউমের সাথে স্থান ভাগ করে এবং / ভলিউম / ভলিউম-নামকে মাউন্ট করে।
মাইকেল ফক্স

21

আমি অন্যান্য উত্তরগুলি থেকে নিম্নলিখিত সমাধানগুলি চেষ্টা করেছি এবং সেগুলি কার্যকর হয়নি:

যদি আপনার সংগ্রহস্থল দূরবর্তীভাবে হোস্ট করা হয় (GitHub, GitLab, BitBucket), আপনি মূলটির নামটি (GitHub.com) নাম পরিবর্তন করতে পারেন এবং ফাইলটির নামটি উপরের-ডাউন উপায়ে জোর করতে পারেন।

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

  1. গিটহাব ডট কম দেখুন
  2. GitHub.com- এ আপনার ভাণ্ডার নেভিগেট করুন এবং আপনি যে শাখায় কাজ করছেন তা নির্বাচন করুন
  3. সাইটের ফাইল নেভিগেশন সরঞ্জাম ব্যবহার করে আপনি যে নামটি পরিবর্তন করতে চান সেই ফাইলটিতে নেভিগেট করুন
  4. গিটহাব আপনাকে ব্রাউজারের মধ্যে ফাইল সম্পাদনা করার অনুমতি দেয়?
    • ক।) সম্পাদনাযোগ্য
      1. "এই ফাইলটি সম্পাদনা করুন" আইকনটি ক্লিক করুন (এটি পেনসিলের মতো দেখাচ্ছে)
      2. ফাইলের নাম পাঠ্য ইনপুটটিতে ফাইলের নাম পরিবর্তন করুন
    • খ।) অখাদ্য
      1. একটি নতুন ট্যাবে "ডাউনলোড" বোতামটি খুলুন এবং আপনার কম্পিউটারে ফাইলটি সংরক্ষণ করুন
      2. ডাউনলোড করা ফাইলটির নতুন নাম দিন
      3. গিটহাব.কম.-এর আগের ট্যাবে, "এই ফাইলটি মুছুন" আইকনটি ক্লিক করুন (এটি ট্র্যাশকেনের মতো দেখাচ্ছে)
      4. "সরাসরি branchnameশাখায় প্রতিশ্রুতিবদ্ধ" রেডিও বোতামটি নির্বাচন করা হয়েছে এবং "পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করুন" বোতামটি ক্লিক করুন তা নিশ্চিত করুন
      5. গিটহাব.কম.-তে একই ডিরেক্টরিতে "ফাইল আপলোড করুন" বোতামটি ক্লিক করুন
      6. আপনার কম্পিউটার থেকে নাম পরিবর্তন করা ফাইলটি আপলোড করুন
  5. "সরাসরি branchnameশাখায় প্রতিশ্রুতিবদ্ধ" রেডিও বোতামটি নির্বাচন করা হয়েছে এবং "পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করুন" বোতামটি ক্লিক করুন তা নিশ্চিত করুন
  6. স্থানীয়ভাবে, চেকআউট / আনুন / শাখাটি টানুন
  7. সম্পন্ন

আমি সরাসরি বিটবাকেটে নতুন নামকরণ করেছি এবং এটি কার্যকর হয়েছে। ধন্যবাদ।
আরএসসি

জানা ভাল. এই কৌশলটি তাত্ত্বিকভাবে কোনও সংগ্রহস্থল হোস্টিং প্ল্যাটফর্মে কাজ করা উচিত তবে আমি এটি জানতে আগ্রহী যে এটির সাথে কাজ করবে না এমন কোনও আছে কিনা।
gmeben

চিত্র বা পিডিএফ এর মতো ব্রাউজারে সম্পাদনা করা যায় না এমন ফাইলগুলির জন্য কাজ করে না; স্পষ্টতই কোনও সম্পাদনার বিকল্প নেই।
অভিজিৎ সরকার

@ অভিজিৎসরকার ভাল বক্তব্য আমি এই মামলার জন্য আমার উত্তর আপডেট করেছি। আমি এই নির্দেশাবলী কাজ পরীক্ষা এবং যাচাই করেছি।
gmeben

কেউ কি এইভাবে কোনও ডিরেক্টরিটির নাম পরিবর্তন করতে চান?
সলভিটিগ

20

@ সিজমেনের উত্তরের অনুরূপ, ডিরেক্টরিটির নামকরণ করার সময় এটিই ওএসএক্সে আমার জন্য কাজ করেছিল ( অন্য পোস্টের এই উত্তর দ্বারা অনুপ্রাণিত ):

git mv CSS CSS2
git mv CSS2 css

কেবলমাত্র করা git mv CSS cssঅকার্যকর যুক্তি ত্রুটি দিয়েছে: fatal: renaming '/static/CSS' failed: Invalid argumentসম্ভবত ওএসএক্স ফাইল ফাইলটি সংবেদনশীল নয়

পিএস বিটিডাব্লু যদি আপনি জ্যাঙ্গো ব্যবহার করেন তবে সংগ্রহশালিক কেস পার্থক্যটিও স্বীকৃতি দিতে পারে না এবং আপনাকে স্ট্যাটিক রুট ডিরেক্টরিতেও ম্যানুয়ালি উপরেরটি করতে হবে


18

1) পুনঃনামকরণ ফাইল Name.jpgথেকেname1.jpg

2) সরানো ফাইল প্রতিশ্রুতিবদ্ধ Name.jpg

3) পুনঃনামকরণ ফাইল name1.jpgথেকেname.jpg

4) name.jpgপূর্ববর্তী প্রতিশ্রুতি যুক্ত ফাইল সংশোধন

git add
git commit --amend

2
আমি এটি fatal: bad source, source=name1.jpg, destination=name.jpg3 ধাপে পেয়ে যাচ্ছি আপনার কি পরামর্শ আছে? থেক্স
অ্যান্টনি কং

1
আপনি কোন প্রতিশ্রুতিবদ্ধ করতে পারবেন না, ঠিক git add
অ্যালেক্স 78191

খুব হ্যাকি লাগছে, তাই না? বা বানর-প্যাচিং।
jeromej

18

আমি নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করেছি:

git rm -r --cached .
git add --all .
git commit -a -m "Versioning untracked files"
git push origin master

আমার জন্য একটি সহজ সমাধান


এই সমাধান। এবং অন্যান্য উত্তরগুলির মতো নয় যখন আপনি ব্যাচের নাম পরিবর্তন করছেন তখন এটি ভাল কাজ করে। গ্ল্যামারফিলি.আর.গিতে আমাদের প্রতিটি .pp .jpg এ পরিবর্তন করা দরকার। ফাইন্ডারে আপনি যে মত ব্যাচ renames কি করতে পারেন এবং এই উত্তর আপনি এটি পরীক্ষা করতে দেয়।
উইলিয়াম Entriken

10

আমরা গিট এমভি কমান্ড ব্যবহার করতে পারি। নীচের উদাহরণস্বরূপ, আমরা যদি abcdeF.js ফাইলটির নামকরণ করে abcdef.js করে রাখি তবে আমরা টার্মিনাল থেকে নিম্নলিখিত কমান্ডটি চালাতে পারি

git mv -f .\abcDEF.js  .\abcdef.js

8

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

  1. ডিস্ক ইউটিলিটিতে কনটেইনার ডিস্ক নির্বাচন করার সময় + বোতামটি ক্লিক করুন
  2. বিন্যাসের অধীনে এপিএফএস (কেস-সংবেদনশীল) নির্বাচন করুন
  3. নাম Sensitive
  4. মুনাফা
  5. Alচ্ছিক: সংবেদনশীল বলে একটি ফোল্ডার তৈরি করুন gitএবংln -s /Volumes/Sensitive/git /Users/johndoe/git

আপনার ড্রাইভ হবে /Volumes/Sensitive/

এখানে চিত্র বর্ণনা লিখুন

আমি গিটের ক্ষেত্রে কেবল কেস-সংবেদনশীল ফাইলের নাম পরিবর্তন করব?


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

4

আমি ম্যাকওএস এ বেশ কয়েকবার এই সমস্যার মুখোমুখি হয়েছি। গিট কেস সংবেদনশীল তবে ম্যাক কেবল কেস সংরক্ষণযোগ্য।

কেউ একটি ফাইল প্রতিশ্রুতিবদ্ধ: Foobar.javaএবং কিছু দিন পরে আবার নামকরণ করার সিদ্ধান্ত নেয় FooBar.java। আপনি যখন সর্বশেষতম কোডটি টানবেন তখন এটি ব্যর্থ হয়The following untracked working tree files would be overwritten by checkout...

একমাত্র নির্ভরযোগ্য উপায় যা আমি দেখেছি এটি এটি ঠিক করে দেয়:

  1. git rm Foobar.java
  2. এটিকে এমন বার্তা দিয়ে প্রতিশ্রুতি দিন যা আপনি মিস করতে পারবেন না git commit -m 'TEMP COMMIT!!'
  3. টান
  4. এটি আপনাকে দ্বন্দ্বকে একীভূত করতে বাধ্য করবে - কারণ আপনার পরিবর্তন এটি মুছে ফেলেছে, তবে অন্য পরিবর্তনটির নামকরণ হয়েছে (সুতরাং সমস্যাটি)
    1. আপনার পরিবর্তনটি গ্রহণ করুন যা 'মুছে ফেলা'
    2. git rebase --continue
  5. এখন আপনার কাজ git rebase -i HEAD~2এবং বাদ dropদিনTEMP COMMIT!!
  6. ফাইলটি এখন কল করা হয়েছে তা নিশ্চিত করুন FooBar.java

3

আপনি যখন ফাইলের নাম পরিবর্তন করে প্রচুর কাজ করেছেন এবং এর কিছু কিছু কেবল আবদ্ধকরণের পরিবর্তন হয়ে থাকে তখন কোনটি তা মনে রাখা শক্ত hard ম্যানুয়ালি "গিট মুভিং" ফাইলটি বেশ কিছু কাজ হতে পারে। সুতরাং আমার ফাইল নাম পরিবর্তন কাজের সময় আমি কী করব তা হ'ল:

  1. সমস্ত নন-গিট ফাইল এবং ফোল্ডারটিকে একটি আলাদা ফোল্ডার / সংগ্রহস্থলে সরান।
  2. বর্তমান খালি গিট ফোল্ডারটি কমিট করুন (এটি সমস্ত ফাইল মুছে ফেলা হিসাবে প্রদর্শিত হবে।)
  3. সমস্ত ফাইলগুলি মূল গিট ফোল্ডার / সংগ্রহস্থলগুলিতে ফিরে যুক্ত করুন।
  4. বর্তমান অ-খালি গিট ফোল্ডারটি কমিট করুন।

আপনি কোন ফাইল বা ফোল্ডারটির নাম পরিবর্তন করেছেন তা নির্ধারণের চেষ্টা না করে এটি কেস সংক্রান্ত সমস্ত সমস্যা সমাধান করবে।


কেন git commmit --amendঅনুচ্ছেদ 4 এ নেই? অন্যথায়, সমস্ত ফাইল অপসারণের সাথে একটি অতিরিক্ত প্রতিশ্রুতি থাকবে। অথবা আপনি git rebase -iস্কোয়াশের সাহায্যে ব্যবহার করতে পারেন ।
অ্যালেক্স 78191

1

কিছুই যদি কাজ না করে তবে গিট আরএম ফাইলের নামটি ডিস্ক থেকে ফাইল মুছতে এবং এটিকে আবার যুক্ত করতে ব্যবহার করুন।


0

আমি @ সিবিআর উত্তর নিয়েছি এবং ফাইলগুলির একটি তালিকা সহ এটি করার জন্য পাইথন 3 স্ক্রিপ্ট লিখেছি:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

import os
import shlex
import subprocess

def run_command(absolute_path, command_name):
    print( "Running", command_name, absolute_path )

    command = shlex.split( command_name )
    command_line_interface = subprocess.Popen( 
          command, stdout=subprocess.PIPE, cwd=absolute_path )

    output = command_line_interface.communicate()[0]
    print( output )

    if command_line_interface.returncode != 0:
        raise RuntimeError( "A process exited with the error '%s'..." % ( 
              command_line_interface.returncode ) )

def main():
    FILENAMES_MAPPING = \
    [
        (r"F:\\SublimeText\\Data", r"README.MD", r"README.md"),
        (r"F:\\SublimeText\\Data\\Packages\\Alignment", r"readme.md", r"README.md"),
        (r"F:\\SublimeText\\Data\\Packages\\AmxxEditor", r"README.MD", r"README.md"),
    ]

    for absolute_path, oldname, newname in FILENAMES_MAPPING:
        run_command( absolute_path, "git mv '%s' '%s1'" % ( oldname, newname ) )
        run_command( absolute_path, "git add '%s1'" % ( newname ) )
        run_command( absolute_path, 
             "git commit -m 'Normalized the \'%s\' with case-sensitive name'" % (
              newname ) )

        run_command( absolute_path, "git mv '%s1' '%s'" % ( newname, newname ) )
        run_command( absolute_path, "git add '%s'" % ( newname ) )
        run_command( absolute_path, "git commit --amend --no-edit" )

if __name__ == "__main__":
    main()
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.