মোছা ফাইল মোছা


499

আমি আমার Git নামক সংগ্রহস্থলের মধ্যে একটি ফাইল আছে বলুন foo

ধরুন এটি দিয়ে rm( মুছে ফেলা git rm) মুছে ফেলা হয়েছে । তারপরে গিট স্ট্যাটাসটি প্রদর্শিত হবে:

Changes not staged for commit:

    deleted: foo

আমি কীভাবে এই পৃথক ফাইল মোছার মঞ্চায়ন করতে পারি?

যদি আমি চেষ্টা করি:

git add foo

এটা বলে:

'foo' did not match any files.

2
এটি কি পুরানো গিট সংস্করণগুলিতে সমস্যা ছিল? আজকাল এটি এক হিসাবে মনে হয় না, এটি পরিবর্তিত ফাইলগুলির অনুরূপ কাজ করে।
cst1992

উত্তর:


22

যেহেতু গিট ২.০.০, git addফাইল মোছার মঞ্চস্থ করবে।

গিট 2.0.0 ডক্স - গিট অ্যাড

<পথস্পেক>…

ফাইলগুলি থেকে সামগ্রী যুক্ত করতে। ফাইলগ্লবগুলি (উদাহরণস্বরূপ * .c) সমস্ত> মেলানো ফাইল যুক্ত করার জন্য দেওয়া যেতে পারে। এছাড়াও একটি শীর্ষস্থানীয় ডিরেক্টরি নাম (উদাহরণস্বরূপ dir / file1 এবং dir / file2 যোগ করার জন্য dir) সামগ্রিকভাবে ডিরেক্টরিটির বর্তমান অবস্থার সাথে তাল মিলিয়ে সূচি আপডেট করার জন্য দেওয়া যেতে পারে (উদাহরণস্বরূপ dir কেবল একটি ফাইল dir / file1 পরিবর্তিত নয় রেকর্ড করবে কার্যনির্বাহী বৃক্ষের মধ্যে একটি ফাইল ডিআর / ফাইল 2 কার্যকারী গাছের সাথে যুক্ত হয়েছে, তবে একটি ফাইল ডিয়ার / ফাইল 3 কার্যকারী গাছ থেকে অপসারণ করা হয়েছে নোট করুন যে গিটের পুরানো সংস্করণগুলি মুছে ফেলা ফাইলগুলিকে উপেক্ষা করবে; আপনি যদি কোনও বিকল্প না ব্যবহার করেন তবে পরিবর্তিত বা নতুন ফাইল যুক্ত করতে চান তবে সরানো ফাইলগুলি উপেক্ষা করুন।


গৃহীত উত্তর সমস্যাটি সমাধান করে না - এবং অন্যটি গিট ২.০.০ থেকে আরও জটিল - এটি সর্বোত্তম উপায়! আপনার আমার উত্সাহ আছে
আন্তোনেস

518

git rm fooমুছে ফেলার জন্য ফাইলটি মঞ্চে ব্যবহার করুন । (এটি ফাইল সিস্টেম থেকে ফাইলটি মুছে ফেলবে, যদি এটি পূর্বে মুছে ফেলা না হয় It এটি অবশ্যই গিট থেকে পুনরুদ্ধার করা যেতে পারে, কারণ এটি আগে চেক ইন ছিল))

ফাইল সিস্টেম থেকে মোছা না করে মুছে ফেলার জন্য ফাইলটি মঞ্চস্থ করতে, ব্যবহার করুন git rm --cached foo


8
এছাড়াও আপনি --cacheকেবল সংগ্রহস্থল থেকে ফাইল সরানোর জন্য এবং ফাইল সিস্টেমে অস্পৃশ্য রেখে পতাকা যুক্ত করতে পারেন।
হাউলেথ

এই অপারেশনটি পূর্বাবস্থায় ফেলার প্রক্রিয়াটি কী হবে, সেটি म्हणजे মোছার জন্য ফাইলটি আন-স্টেজ করা? এটা কি সম্ভব?
লংদা

82
আসলে ওপি জিজ্ঞাসা করেছিল যে ইতিমধ্যে_ মোছা ফাইলটি কীভাবে মঞ্চায়িত করা যায় এবং এটি দ্বারা এটি করা যেতে পারে git status | grep 'deleted:' | cut -d':' -f2 | xargs -t -I {} git add -u "{}"। অন্যান্য উত্তরগুলি দেখে মনে হচ্ছে কীভাবে ফাইল অপসারণটি সঠিকভাবে করা যায় (তবে কীভাবে ইতিমধ্যে মুছে ফেলা ফাইলগুলি পর্যায়িত করা যায় না)। পুনশ্চ. xargsভিত্তিক কমান্ড উবুন্টু 12.04 তে আমার জন্য কাজ করে, তবে যখন আমি নিজে git add -u deleted_file.txtকাজ doens't করুন। আমার গিটটি 1.7.9.5
দিমিত্রি কে

8
@ ডিমিট্রিকে: git rmফাইলটি সিস্টেম থেকে ইতিমধ্যে মুছে ফেলা সত্ত্বেও আনন্দের সাথে মুছে ফেলার জন্য মঞ্চস্থ করবে। এবং অন্য উত্তরে ওপির মন্তব্য যেমন উল্লেখ করেছে, তারা ইতিমধ্যে মুছে ফেলা একটি নির্দিষ্ট ফাইল মঞ্চ করতে চেয়েছিল।
Wooble

3
git rmইতিমধ্যে সরানো ফাইল মঞ্চ না। এটা তোলে এই ত্রুটি ছোঁড়া: fatal: pathspec '~.SLDASM' did not match any files। এখানে প্রমাণ সহ পর্দা রয়েছে: i.imgur.com/cKNKGGe.png i.imgur.com/1p9JdWF.png । প্রথম স্ক্রিনশটটি পরিষ্কারভাবে দেখায় যে 2 টি ফাইল মুছে ফেলা হয় এবং মঞ্চস্থ হয় না, দ্বিতীয় স্ক্রিনশট দেখায় যে আমি যখন টাইপ করি তখন git rm "~$Box.SLDASM"এটি ত্রুটিটি ছুঁড়ে দেয়।
কুলাগিন

413

যদিও এটি ব্যবহার করা সঠিক git rm [FILE], বিকল্প হিসাবে, আপনি করতে পারেন git add -u

git-addডকুমেন্টেশন অনুযায়ী :

-উ - আপডেট

সূচিটি ঠিক ঠিক যেখানে আপডেট করা হয়েছে সেখানে ইতিমধ্যে [FILE] এর সাথে একটি এন্ট্রি মিলেছে। এটি কার্যকারী গাছের সাথে মেলানোর জন্য সূচী এন্ট্রিগুলিকে পরিবর্তন করে পাশাপাশি কোনও নতুন ফাইল যুক্ত করে না।

যদি -u বিকল্পটি ব্যবহার করা হয় তখন কোনও [ফাইল] না দেওয়া হয়, পুরো কার্যক্ষম গাছের সমস্ত ট্র্যাক করা ফাইল আপডেট করা হয় (বর্তমান ডিরেক্টরি এবং এর উপ-ডিরেক্টরিতে আপডেট সীমাবদ্ধ করতে ব্যবহৃত গিটের পুরানো সংস্করণ)।

যার উপর সূচকটি রিফ্রেশ হবে এবং ফাইলগুলি সঠিকভাবে মঞ্চস্থ হবে।


56
হ্যাঁ git add -A .সমস্ত পরিবর্তন যুক্ত করবে, আমি বিশেষভাবে একটি মুছে ফেলা ফাইলটি পর্যায় করতে চেয়েছিলাম।
অ্যান্ড্রু তোমাজোস

25
এটি সমস্ত পরিবর্তিত ফাইল যুক্ত করবে; শুধু মুছে ফেলা ফাইল।
চিরকাল

3
ঐটা ঠিক. আরও সুনির্দিষ্টভাবে, এটি ফাইলগুলি মুছে ফেলা হয়েছে বা সদ্য সংশোধিত, ইতিমধ্যে ট্র্যাক করা সমস্ত পরিবর্তনের মঞ্চস্থ করবে। আপনি যখন একাধিক ফাইল মুছবেন এবং স্বতন্ত্রভাবে মঞ্চস্থ করতে চান না তখন এটি সহায়তা করে।
সাইলেশ

9
মুছে ফেলা ফাইলগুলি এবং মডিফাই না করার জন্য কি কোনও উপায় আছে? উৎসুক.
আগস্ট

11
আমি করেছি git add -u FolderWithDeletedFiles/এবং এটি আমি যা করতে চাই তা করেছি, ধন্যবাদ
সংসদে

158

মুছে ফেলা সমস্ত ম্যানুয়ালি ফাইল আপনি ব্যবহার করতে পারেন:

git rm $(git ls-files --deleted)

এই কমান্ডটিতে একটি উপাধি যুক্ত করতে git rm-deleted, চালনা করুন:

git config --global alias.rm-deleted '!git rm $(git ls-files --deleted)'

2
উইন্ডোজ বাশ কনসোলটিতে স্পষ্টতই $ () স্বরলিপিটি বিদ্যমান নেই, যার ফলেunknown option `deleted)
ফলিক্স গাগনন-গ্রেনিয়ার

2
আমি মনে করি না যে আপনার পথে যদি ফাঁকা জায়গা থাকে তবে এটি কাজ করে। কমপক্ষে, এটি আমার সিস্টেমে নেই (zsh সহ)।
উইল শিপলি

3
আমার জন্য নিখুঁতভাবে কাজ করেছেন! আমার যা প্রয়োজন ঠিক তা করেছে। এখানে বিশাল প্রশংসা!
রেডস্যান্ডস

উইন্ডোজ নাfor /F %I in ('git ls-files --deleted') do git add -u %I
Eis

3
এটি স্পেস সহ ফাইলের নামের জন্য কাজ করে না, প্রয়োজন হলে 'গিট অ্যাড-ইউ' করে।
জে-ডিজল

33

সমস্ত প্রস্তুত মুছে ফেলা ফাইল যুক্ত করতে

git status -s | grep -E '^ D' | cut -d ' ' -f3 | xargs git add --all

নিশ্চিত করার জন্য চেক ধন্যবাদ

git status

আপনি যেতে ভাল করা উচিত


5
নিশ্চিত হয়ে যে এটি কাজ করে। আমি মনে করি এখানে পাঠটি করণীয় নয় rm <file>, বরংgit rm <file>
ড্যানগার্ডন

1
এফওয়াইআই: স্পেস কাটলে সমস্যার সৃষ্টি হয় যদি কোনও পাথের ফাঁকা জায়গা থাকে
ডেভিস

1
এটি স্পেস সহ ফাইলের নামের জন্য কাজ করে না, প্রয়োজন হলে 'গিট অ্যাড-ইউ' করে।
জে-ডিজল

আমার জন্য পুরোপুরি কাজ করে git version 2.15.2 (Apple Git-101.1)
কালব টৌলিয়েন

লিনাক্স কনসোলে পুরোপুরি কাজ করে!
আহমেদ এএমএমআরআই

8

তুমি ব্যবহার করতে পার

git rm -r --cached -- "path/to/directory"

একটি মুছে ফেলা ডিরেক্টরি মঞ্চে।



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