আমি কীভাবে একটি গিট সংগ্রহস্থলের সমস্ত মুছে ফেলা ফাইলগুলি তালিকাভুক্ত করতে পারি?


304

আমি জানি যে ফাইলগুলি কখন মুছে ফেলা হয় এবং গিটারগুলি পৃথক প্রতিশ্রুতিগুলি পরীক্ষা করতে সক্ষম হয় কোন ফাইলগুলি অপসারণ করা হয়েছে তা দেখতে, কিন্তু কোনও আদেশ আছে যা প্রতিলিপিটির জীবনকাল জুড়ে প্রতিটি মুছে ফেলা ফাইলের একটি তালিকা তৈরি করবে?


যে কেউ এই উত্তর উপর হুমড়ি কিন্তু একে অপরের হ্যাশ বা শাখা কমিট থেকে মাত্র, এখনো যোগ করেনি ফাইল, নতুন নামকরণ, মুছে ফেলা, পরিবর্তন, ইত্যাদি একটি তালিকা দেখতে করতে খুঁজছি জন্য, এই একটি করুন: git diff --name-status commit_hash
গ্যাব্রিয়েল স্ট্যাপলস

উত্তর:


409
git log --diff-filter=D --summary

গিট সংগ্রহস্থলের একটি মুছে ফেলা ফাইলটি সন্ধান এবং পুনরুদ্ধার দেখুন

কোন প্রতিশ্রুতিতে সেগুলি সরানো হয়েছে সে সম্পর্কে সমস্ত তথ্য আপনি যদি না চান তবে আপনি কেবল grep deleteসেখানে একটি যুক্ত করতে পারেন ।

git log --diff-filter=D --summary | grep delete

13
সতর্কতা: এটি মুছে ফেলা যে কোনও ফাইলের তালিকা করে। আপনি একটি ফাইল মুছে ফেলেছেন, তাহলে একই নামের একটি নতুন ফাইল তৈরি করা, এটা হবে এই তালিকা এ প্রদর্শিত, একটি অদ্যাপি বর্তমান ফাইল আছে যদিও আছে।
টিজে ক্রাউডার

24
গিটটি কী বদলেছে আদেশটিও আপনার দেখতে হবে । বেশ সুন্দর।
মিঃ ব্লাক

6
এটি মুছে ফেলা হিসাবে নামগুলিও তালিকাভুক্ত করবে। এই ব্যবহারগুলি git log --find-renames --diff-filter=D --summary | grep delete
এড়াতে

2
গিটের সাথে 2.9 নামগুলি ডিফল্টরূপে সক্রিয় করা হয়। এগুলি আবার মুছে ফেলা ব্যবহার হিসাবে দেখতেgit log --no-renames --diff-filter=D --summary | grep delete
মাইকেল গ্রোই

2
ব্যবহারে সতর্কতা অবলম্বন করুন grep deleteকারণ যদি প্রতিশ্রুতি বার্তায় শব্দটি মুছতে থাকে তবে তাও নেওয়া হবে। grep 'delete mode'পরিবর্তে ব্যবহার করুন।
ভাদিম


37

যদি আপনি কেবল বর্তমানে মুছে ফেলা ফাইলগুলি দেখতে আগ্রহী হন তবে আপনি এটি ব্যবহার করতে পারেন:

git ls-files --deleted

যদি আপনি সেগুলি মুছে ফেলতে চান (যদি আপনি তাদের "গিট আরএম" ব্যবহার না করে মুছে ফেলে) পাইপ যা xargs git rm এর ফলস্বরূপ হয়

git ls-files --deleted | xargs git rm

11
এটি সূচীতে কেবল এমন ফাইলগুলি দেখায় যা কার্যকপিতে মুছে ফেলা হয়েছে। ওপি সর্বদা মুছে ফেলা সমস্ত ফাইল চায়।
সর্বাধিক ন্যানসি

1
বাgit rm $(git ls-files --deleted)
ইউনজেন

যদিও ওপি যা চেয়েছিল তা না হলেও এটি এখনও কমপক্ষে নিজের জন্য কার্যকর ছিল, যেহেতু অনুসন্ধানে আমার ক্যোয়ারীটি যথাযথভাবে বানানোতে আমার সমস্যা হয়েছিল
solstice333

10

এই স্ট্যাক ওভারফ্লো উত্তরের উদ্ধৃতি দিয়ে ।

পরিবর্তিত প্রতিটি ফাইলের জন্য টাইপ-অফ চেঞ্জ (এ: যুক্ত, এম: সংশোধিত, ডি: মুছে ফেলা) এটি একটি খুব ঝরঝরে উপায় ।

git diff --name-status

4

এবং আপনি যদি কোনওভাবে ফলাফলকে সীমাবদ্ধ রাখতে চান তবে এখানে একটি দুর্দান্ত ফলাফল:

$ git log --diff-filter=D --summary | sed -n '/^commit/h;/\/some_dir\//{G;s/\ncommit \(.*\)/ \1/gp}'
delete mode 100644 blah/some_dir/file1 d3bfbbeba5b5c1da73c432cb3fb61990bdcf6f64
delete mode 100644 blah/some_dir/file2 d3bfbbeba5b5c1da73c432cb3fb61990bdcf6f64
delete mode 100644 blah/some_dir/file3 9c89b91d8df7c95c6043184154c476623414fcb7

আপনি যে ফাইলটি some_dirসংঘটিত হবে তার সাথে একত্রে সমস্ত ফাইল (সেড কমান্ড দেখুন) মুছে ফেলাবেন। যে কোনও সিড রেজেক্স করবে (আমি এটি মুছে ফেলা ফাইলের প্রকারগুলি ইত্যাদির জন্য ব্যবহার করি)


2
আমি বিশ্বাস করি যে এটি দৈনিক বিকাশকারী জীবনে কার্যকর হতে জটিল to পরিবর্তে, আপনি যদি বর্তমান ডিরেক্টরি থেকে মুছে ফেলা ফাইলগুলি তালিকাভুক্ত করতে চান তবে কেবল করুন:git log --diff-filter=D .
সেবি

আমার কেসটি ছিল যে ডিরেক্টরিটিও সরানো হয়েছিল এবং আমি কেবল নামের নতুন অংশটি।
ইস্তানী

4

উইন্ডোজের যেহেতু কোনও grepকমান্ড নেই, পাওয়ার পাওয়ারে এটি আমার জন্য কাজ করেছে:

git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt

কী Select-String?
মার্কাস জে

1
এটি একটি পাওয়ারশেল সেমিডলেট। ডকস.মাইক্রোসফট.এইন.ইউএস
জেমস

উইন্ডোজের FIND এবং FINDSTR রয়েছে , যদিও আমি অবশ্যই স্বীকার করব যে আমি সেগুলি কখনও ব্যবহার করি নি। গিট ব্যাশ ইনস্টল করা সহজতম উপায়। এর বিকল্প হ'ল ফুলে যাওয়া সাইগউইন
পিটার মর্টেনসেন

4

মুছে ফেলা সমস্ত ফাইলকে কিছু_বাঞ্চে দেখান

git diff origin/master...origin/some_branch --name-status | grep ^D

অথবা

git diff origin/master...origin/some_branch --name-status --diff-filter=D 

2
এটি কাজ করবে না কারণ এতে তাদের মধ্যে একটি ডি সহ সমস্ত ফাইল থাকবে। আপনার মতো git diff origin/master...origin/some_branch --name-status | grep ^Dবা কিছু দরকারgit diff origin/master...origin/some_branch --name-status --diff-filter=D
নাথানিস্টউড

1

এটি আপনাকে সমস্ত শাখায় মুছে ফেলা সমস্ত ফাইলের একটি তালিকা পাবে, যা তাদের পথ অনুসারে বাছাই করেছে:

git log --diff-filter=D --summary | grep "delete mode 100" | cut -c 21- | sort > deleted.txt

MSysgit (2.6.1.windows.1) এ কাজ করে। দ্রষ্টব্য, আমাদের "মোড 100 মুছুন" দরকার কারণ গিট ফাইলগুলি মোড 100644 বা 100755 হিসাবে চালু হতে পারে।

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