গিট-ডিফ এবং গিট লগ কীভাবে নতুন এবং মুছে ফেলা ফাইলগুলিকে উপেক্ষা করবেন?


154

কখনও কখনও কিছু নতুন, মুছে ফেলা এবং / অথবা নাম পরিবর্তন করা ফাইলগুলির সাথে একত্রে দু'একটি পরিবর্তিত ফাইল রয়েছে। করার সময় git diffবা git-logআমি এগুলি বাদ দিতে চাই, তাই আমি পরিবর্তনগুলি আরও ভালভাবে স্পষ্ট করতে পারি।

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

উত্তর:


217

--diff-filterবিকল্প উভয় সঙ্গে কাজ করে diffএবং লগ।

আমি --diff-filter=Mপ্রচুর ব্যবহার করি যা কেবলমাত্র সামগ্রী পরিবর্তনের জন্য পৃথক ফলাফলকে সীমাবদ্ধ করে।

Renames এবং কপি সনাক্ত করতে এবং পরিবর্তন আউটপুটে এই ব্যবহার করতে, আপনাকে ব্যবহার করতে পারেন -Mএবং -Cযথাক্রমে একসঙ্গে সঙ্গে Rএবং Cঅপশন --diff-filter


3
git logএটির সাথে যখন ব্যবহার করা হয় তখন এটি কমিটগুলি সম্পূর্ণরূপে উপেক্ষা করে যা কেবলমাত্র ফাইলগুলিকে যুক্ত করে এবং / অথবা মুছে ফেলে।
কিউএক্সএক্স

7
আসলে কি কেবল এক প্রকারের ডেটা বাদ দেওয়ার কোনও উপায় আছে? এরকম কিছু--diff-filter=!D
কামিল ডিজেডজিক

24
কমিল হ্যাঁ, আছে ডকুমেন্টেশন থেকে উদ্ধৃতি:Also, these upper-case letters can be downcased to exclude. E.g. --diff-filter=ad excludes added and deleted paths.
লাম্বডা ক্রুইজার

62
  • অফলাইন ডকুমেন্ট:
--diff-filter=[(A|C|D|M|R|T|U|X|B)…​[*]]

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

যখন * (সমস্ত বা কিছুই নয়) সংমিশ্রণে যুক্ত করা হয়, তুলনা করার ক্ষেত্রে অন্যান্য মানদণ্ডের সাথে মেলে এমন কোনও ফাইল উপস্থিত থাকলে সমস্ত পাথ নির্বাচন করা হয়; অন্য মানদণ্ডের সাথে মেলে এমন কোনও ফাইল যদি না থাকে তবে কিছুই নির্বাচন করা হয় না।

এছাড়াও, এই বড় হাতের অক্ষরগুলি বাদ দেওয়া যায় না can উদাহরণস্বরূপ --ডিফ-ফিল্টার = বিজ্ঞাপন যোগ এবং মুছে ফেলা পথ বাদ দেয়।

উদাহরণ: কেবল যুক্ত, পরিবর্তিত, পরিবর্তিত ফাইলগুলি মুছে ফেলা ফাইলগুলি বাদ দেয়:

git diff --diff-filter=ACM

2
পাথগুলি অন্তর্ভুক্ত করার জন্য পাথ এবং মূল অক্ষরের বিকল্পগুলি বাদ দেওয়ার জন্য ছোট হাতের অক্ষর বিকল্পগুলি ব্যবহার সম্পর্কে ভাল নোট।
stuyam

-3

আপডেট: গৃহীত উত্তর চার্লস বেইলি দ্বারা সঠিক এক; পছন্দসই কার্যকারিতা ইতিমধ্যে গিট মধ্যে নির্মিত।

আমি এই উত্তরটি এখানে রেখে যাব কারণ এটি গিট হিসাবে নির্মিত না এমন জিনিসগুলির জন্য ধারণা সরবরাহ করতে পারে।


git diffনতুন এবং মুছে ফেলা ফাইলগুলির সাথে তুলনা করে দেখায় /dev/null। এমন কিছু লেখার পক্ষে খুব বেশি অসুবিধা হওয়া উচিত নয় (আমি পার্ল নিজেই ব্যবহার করব) যা /dev/nullপরবর্তী ডিফ্ট পর্যন্ত নীচের লাইনগুলি সন্ধান করে এবং ফিল্টার করে। তারপরে git diff ... | the-filter

নতুন নামকরণ করা ফাইলগুলি আলাদা বিষয়; আমার (এখনও) এর কোনও ভাল উত্তর নেই।


এটি ঠিক আছে, তবে এইভাবে আমি প্রয়োজন হলে কেবল পেজার ব্যবহার করার সম্ভাবনাটি হ্রাস করব (কম) না, তাই না?
মার্টিনাস

@ মাআর্টিনাস: আমি মনে করি তাই; আমি এটা ভাবিনি। (ব্যক্তিগতভাবে, আমি আমার গিট পেজারটিকে "বিড়াল" এ সেট করেছিলাম এবং ... | lessস্পষ্টভাবে ব্যবহার করি ।) আপনি হয়ত lessএর বিকল্প -Eবা -Fবিকল্পটির দিকে তাকান (যদিও আমার সিস্টেমে এটি আমাকে আউটপুট দেখতে দেয় না)।
কিথ থম্পসন

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