গিট সংগ্রহস্থল থেকে কীভাবে একটি ডিরেক্টরি মুছে ফেলবেন?


1232

আমার গিটহাব সংগ্রহস্থলে আমার 2 টি ডিরেক্টরি রয়েছে। আমি তাদের মধ্যে একটি মুছতে চাই। পুরো সংগ্রহস্থলটি মোছা ও পুনরায় তৈরি না করে আমি কীভাবে এটি করতে পারি?


1
ডিরেক্টরিতে কোন ফাইল আছে?
ফ্রেড ফু

3
@ আইসম্যানস: হ্যাঁ 6 ফাইল। একটি বড় হাতের অক্ষর ব্যতীত উভয় ডিরেক্টরি একই রকম, অন্যটি ছোট হাতের অক্ষর।
সাহাত ইয়ালকাবভ

উত্তর:


2321

গিট এবং স্থানীয় থেকে ডিরেক্টরি সরান

আপনি উভয় ডিরেক্টরিতে 'মাস্টার' চেকআউট করতে পারেন;

git rm -r one-of-the-directories // This deletes from filesystem
git commit . -m "Remove duplicated directory"
git push origin <your-git-branch> (typically 'master', but not always)

গিট থেকে ডিরেক্টরি সরান তবে স্থানীয় নয়

মন্তব্যে উল্লিখিত হিসাবে, আপনি সাধারণত যা করতে চান তা হ'ল এই ডিরেক্টরিটি গিট থেকে সরিয়ে ফেলুন তবে ফাইল সিস্টেম থেকে সম্পূর্ণ মুছবেন না (স্থানীয়)

সেক্ষেত্রে ব্যবহার করুন:

git rm -r --cached myFolder

8
আমারও ঠিক একই অবস্থা ছিল। যখন আমি git rm -r myFolderএটি চেষ্টা করেছিলাম তবে "মাইফোল্ডার" ডিরেক্টরি থেকে সবকিছু মুছে ফেলেছি। "মাইফোল্ডার" ডিরেক্টরিতে সমস্ত কিছু ফিরিয়ে দিতে হবে এবং তারপরে প্রতিশ্রুতিবদ্ধ।
জাস্টিন 13

240
@ জাস্টিন কেবল গিট থেকে অপসারণ এবং ফাইল git rm -r --cached myFolder
সিস্টেমকে

32
আমি পেয়েছি ত্রুটি বার্তাটি: মারাত্মক: প্যাথস্পেক 'ডিরেক্টরি' কোনও ফাইলের সাথে মেলে না।
ব্যবহারকারী 2441441

3
@ ব্যবহারকারী 2441441 যখন রেপোতে মোটেও যোগ করা হয়নি এমন একটি ফোল্ডার / ফাইলটি সরিয়ে দেওয়ার চেষ্টা করছিলাম তখন আমার এই ত্রুটিটি ছিল
lukeatdesignworks

3
git rm -r --cached directory/কেবল গিট ট্র্যাক থেকে অপসারণ করে, তবে সংগ্রহস্থল কাঠামোটি থেকে যায়।
নস্টর

287

ফোল্ডার / ডিরেক্টরিটি কেবল গিট সংগ্রহস্থল থেকে সরান এবং স্থানীয় থেকে নয় 3 টি সহজ কমান্ড ব্যবহার করুন।


ডিরেক্টরি সরানোর পদক্ষেপ

git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master

পরবর্তী কমিটগুলিতে সেই ফোল্ডারটিকে উপেক্ষা করার পদক্ষেপ

পরের কমিটস থেকে সেই ফোল্ডারটিকে উপেক্ষা করার জন্য .gitignore নামের মূলটিতে একটি ফাইল তৈরি করুন এবং এতে ফোল্ডারগুলির নাম দিন। আপনি চান হিসাবে অনেক রাখতে পারেন

.gitignore ফাইলটি এর মতো দেখতে হবে

/FolderName

ডিরেক্টরি সরান


1
আপনার অন্যান্য কম্পিউটারে গিট আরএম -r - ক্যাচড ফোল্ডারনাম গিট কমিট-এম "রিপোজিটরি থেকে ফোল্ডারটি সরানো" করতে হবে এবং তারপরে এটি সিঙ্ক রাখতে একটি টান করতে হবে।
সাইমন

1
এটি কি এখন অবধি ডিরেক্টরিতে এটি পুনরায় সংগ্রহস্থলে যুক্ত করা হবে? বা এটি কি কেবল ডিরেক্টরিটি সরাতে এবং এটি .git রেপোতে পুনরায় পাঠাতে হবে?
alpha_989

1
গ্রেট! কাজ!
বিইনিং কোডার্স

2
ভালভাবে ব্যাখ্যা করা হয়েছে, দুর্দান্ত উত্তর
রক্ষিত শাহ

1
সাবাশ. আমার মেশিনে, তৃতীয় ধাপটি কাজ করে না। তবে এটিকে $ গিট পুশ
হংকং

82

যদি কোনও কারণে, কর্মকাজে যা বলেছে তা কাজ করে না, আপনি যে ডিরেক্টরিটি ব্যবহার করতে চান তা বা আপনার ফাইল সিস্টেম ব্রাউজারের সাথে মুছে ফেলার চেষ্টা করতে পারেন (উদাঃ উইন্ডোজ ফাইল এক্সপ্লোরার ইন)। ডিরেক্টরি মুছে ফেলার পরে, কমান্ড জারি করে:
git add -A
এবং তারপরে
git commit -m 'deleting directory'
এবং তারপরে
git push origin master


4
এটি আমার পক্ষে কাজ করেছে। আপনি কি -A যুক্তি ব্যাখ্যা করতে পারেন?
অরুন

2
@Arun -A সমস্ত ট্র্যাক করা এবং untracked ফাইল থেকে --all এবং অ্যাড পরিবর্তনের জন্য ছোট
জোয়াকিম Rohde

এটি আমার পক্ষে কাজ করেছে।
ইউভিএম

20

আপনি এটি চেষ্টা করতে পারেন: git rm -rf <directory_name>

এটি ডিরেক্টরি মুছে ফেলতে বাধ্য করবে।


3
এটি স্থানীয় ডিরেক্টরি থেকেও মুছে ফেলা হবে
abdul rehman kk

18

আপনি যদি ডিরেক্টরিটিতে ফাইলগুলি অপসারণ করেন ( git rmঅন্যান্য উত্তরগুলি ব্যাখ্যা করে) তবে গিট সম্পর্কিত যতক্ষণ ডিরেক্টরি থাকে ততক্ষণ ডিরেক্টরিটি বিদ্যমান থাকে না। আপনি একটি খালি ডিরেক্টরি প্রতিশ্রুতিবদ্ধ করতে পারবেন না, বা একটিও সরাতে পারবেন না।

এটি সাবভারশনের মত নয় যেখানে আপনাকে স্পষ্টভাবেই করতে হবে svn rm emptyfolder/, এবং ঘটনাক্রমে কেন manগিটের জন্য পৃষ্ঠাটি নিজেকে "বোকা কনটেন্ট ট্র্যাকার" হিসাবে বর্ণনা করে

"আমি কীভাবে একটি গিট সংগ্রহস্থলে একটি খালি ডিরেক্টরি যুক্ত করব" এ সম্পর্কিত একটি উত্তর এই বিষয়ে FAQ- এর লিঙ্ক :

বর্তমানে গিট ইনডেক্সের নকশা (স্টেজিং এরিয়া) কেবলমাত্র ফাইলগুলি তালিকাভুক্ত করার অনুমতি দেয় এবং খালি ডিরেক্টরিগুলি পরিবর্তনের জন্য যথেষ্ট সক্ষম কেউই এ পরিস্থিতির প্রতিকারের জন্য যথেষ্ট যত্ন নেয়নি।

ডিরেক্টরিগুলির মধ্যে ফাইল যুক্ত করার পরে স্বয়ংক্রিয়ভাবে যুক্ত হয়। এটি হ'ল ডিরেক্টরিগুলি কখনই ভান্ডারে যুক্ত করতে হয় না এবং সেগুলি নিজেই ট্র্যাক করা যায় না।

আপনি " git add <dir>" বলতে পারেন এবং এটি সেখানে ফাইল যুক্ত করবে।

যদি আপনার সত্যিকারের চেকআউটগুলিতে একটি ডিরেক্টরি থাকতে হয় তবে আপনার এটিতে একটি ফাইল তৈরি করা উচিত। .gitignore এই উদ্দেশ্যে ভাল কাজ করে; আপনি এটিকে খালি রেখে দিতে পারেন, বা ডিরেক্টরিতে প্রদর্শিত ফাইলগুলির নাম পূরণ করতে পারেন।


8

আমি ইতিমধ্যে ফোল্ডারটি আগেই প্রতিশ্রুতিবদ্ধ করেছি এবং ইতিহাসের ডিরেক্টরিটিও মুছে ফেলতে চাই।

আমি নিম্নলিখিতগুলি করেছেন:

এতে ফোল্ডার যুক্ত করুন .gitignore:

echo Folder_Name/ >> .gitignore

সমস্ত কমিট থেকে সরান:

git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch Folder_Name/' --prune-empty --tag-name-filter cat -- --all

পুরানো কমিটস থেকে রেফগুলি সরিয়ে ফেলুন:

git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d

সমস্ত পুরানো রেফ সম্পূর্ণরূপে সরানো হয়েছে তা নিশ্চিত করুন

rm -Rf .git/logs .git/refs/original

একটি আবর্জনা সংগ্রহ সম্পাদন করুন

git gc --prune=all --aggressive

অনলাইন সংগ্রহস্থলের পরিবর্তনের জন্য আপনাকে চাপ দিন:

git push

আপনি এখানে সম্পন্ন করা হয়েছে।

তবে আপনি সমস্ত শাখায় সমস্ত পরিবর্তনের সাথে নিম্নলিখিত পরিবর্তনগুলি চাপতে পারেন: তবে এই আদেশের সাথে সাবধান হন!

git push origin --all --force
git push origin --tags --force

এর পরে ফোল্ডারটি গিট থেকে সরানো হয়েছে, তবে স্থানীয় ডিস্ক থেকে মুছে ফেলা হয়নি।


7

খালি ফোল্ডারগুলি মুছে ফেলার জন্য

আমি তৈরি করা একটি খালি ডিরেক্টরি (ফোল্ডার) মুছতে চেয়েছিলাম, গিট এটি মুছতে পারে না, কিছু গবেষণা করার পরে আমি শিখেছি গিট খালি ডিরেক্টরিগুলি ট্র্যাক করে না। যদি আপনার কার্যক্ষম গাছটিতে একটি খালি ডিরেক্টরি থাকে তবে আপনি এটি দিয়ে সহজেই মুছে ফেলা উচিত

rm -r folderName

গিটকে জড়িত করার দরকার নেই।


1
ধন্যবাদ! এটাই আমার দরকার ছিল।
স্পাইরোসকো

6

আপনার গিট ডিরেক্টরিতে যান তারপরে নিম্নলিখিত কমান্ডটি টাইপ করুন: rm -rf < ডিরেক্টরি নাম >

ডিরেক্টরিটি মোছার পরে এই প্রতিশ্রুতিগুলি পরিবর্তন করুন: গিট কমিট-এম "আপনার প্রতিশ্রুতি বার্তা"

তারপরে কেবল রিমোট জিআইটি ডিরেক্টরিতে পরিবর্তনগুলি চাপুন: গিট পুশ অরিজিন < শাখার নাম >


4

আপনি স্থানীয়ভাবে ফোল্ডারটি মুছতে পারেন এবং তারপরে নীচে চাপ দিন:

git rm -r folder_name
git commit -m "your commit"
git push origin master

4

আমি সাধারণত git add --allদূরবর্তী সংগ্রহস্থল থেকে ফাইল / ফোল্ডার অপসারণ করতে ব্যবহার করি

rm -r folder_name
git add --all
git commit -m "some comment"
git push origin master

master সংগ্রহস্থলের অন্য যে কোনও শাখা দ্বারা প্রতিস্থাপন করা যেতে পারে।


2

আপনি আটলাসিয়ান উত্স ট্রি (উইন্ডোজ) ( https://www.atlassian.com/software/sourcetree/overview ) ব্যবহার করতে পারেন । গাছ থেকে কেবল ফাইলগুলি নির্বাচন করুন এবং শীর্ষে "সরান" বোতামটি চাপুন। স্থানীয় সংগ্রহস্থল এবং স্থানীয় গিট ডাটাবেস থেকে ফাইলগুলি মুছে ফেলা হবে। তারপরে কমিট করুন, তারপরে চাপ দিন।


এটি আমি পাশাপাশি করি। এটি করা সত্যিই সহজ করে তুলেছে, যদিও, গিট কমান্ড শেখা জেনে রাখা ভাল।
মিকাহ মন্টোয়া

1

আমার এক সহকর্মী বিএফজি রেপো-ক্লিনারটিকে পরামর্শ দিয়েছিল যা আমি শক্তিশালী বলে মনে করি। এটি কেবল অবাঞ্ছিত ডেটা মুছে ফেলবে না তবে সম্পর্কিত কোনও কমিট তথ্য থেকে আপনার ভান্ডারও পরিষ্কার করে।


1

নতুন ডিরেক্টরি যুক্ত করতে:

mkdir <YOUR-DIRECTORY>

কিন্তু এখন গিট এই নতুন ডিরেক্টরি দ্বারা সচেতন নয়, কারণ গিট ফাইলের ডিরেক্টরি ট্র্যাক করে না ডিরেক্টরেটরি

git status

গিটটি আমরা যে পরিবর্তন করেছি সে সম্পর্কে সচেতন হবে না, তাই আমরা .keepএই নতুন পরিবর্তন দ্বারা গিটকে সচেতন করতে লুকানো ফাইল যুক্ত করব ।

touch /YOUR-directory/.keep

এখন, আপনি git statusগিট আঘাত করলে পরিবর্তনগুলি সম্পর্কে সচেতন হবে।

আপনি যদি ডিরেক্টরিটি মুছতে চান তবে আপনার এই আদেশটি ব্যবহার করা উচিত।

rm -r <YOUR-DIRECTORY>

এবং যদি আপনি ব্যবহার করে চেক করেন তবে আপনি git statusদেখতে পাবেন ডিরেক্টরিটি সরানো হয়েছে।


0

প্রথম গিট কমান্ডটি কিছু মুছে ফেলার আগে আপনারা কে তা জানতে হবে

  1. গিট ইনিশ
  2. গিট কনফিগারেশন ব্যবহারকারীর নাম "কেউ"
  3. গিট কনফিগারেশন User.email "someone@someplace.com"
  4. গিট আরএম-আর
  5. গিট কমিট-এম "মুছে ফেলা ডির"
  6. গিট পুশ আদি মাস্টার

0

2 টি উত্তরের সংমিশ্রণটি আমার পক্ষে কাজ করেছিল

git rm -r one-of-the-directories
git commit . -m "Remove duplicated directory"
git push

যদি এটি এখনও কিছু সতর্কতা দেখায় তবে ফাইলগুলি ম্যানুয়ালি সরান

git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
git push
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.