একটি নির্দিষ্ট ডিরেক্টরিতে আমি কীভাবে 'গিট ডিফার' করব?


132

git diffপ্রকৃতপক্ষে সমস্ত উত্স কোডে একটি ভিন্নতা চালায়। আমি একটি নির্দিষ্ট ডিরেক্টরিতে এটি কীভাবে করব, যাতে আমি এর নীচে ফাইলগুলিতে পরিবর্তনগুলি দেখতে পারি?


2
stackoverflow.com/a/12123669/1815624 git diff master..yourbranch path/to/folder
CrandellWS

উত্তর:


125

একটি পথ সরবরাহ করুন (এই ক্ষেত্রে মাইফোল্ডার) এবং কেবল চালান:

git diff myfolder/

28
আমি git diff -- myfolderগিটার বিষয়ে অস্পষ্টতা কমাতে ব্যবহার করতে চাই । গিট ডিফের (এবং অনেকগুলি গিট কমান্ড) সাধারণ স্বীকৃতি হ'ল git diff [commit-ish] -- [path]যেখানে কমিট-ইশ ডিফল্ট হেডের (যেখানে আপনি এখন আছেন) [path]ডিফল্ট এবং গিট রুট ডিরেক্টরিতে ডিফল্ট, তবে আপনার বর্তমান ডিরেক্টরিটির সাথে সম্পর্কিত কিছু হতে পারে। ছাড়া --, Git অনুমান করবে আপনি কি বলতে চাইছেন, [commit-ish]বা [path]। কিছু ক্ষেত্রে, এটি স্বরলিপিটি 'অস্পষ্ট' বলে গিটকে বলে দেয়। যদি অামি যথাযথভাবে স্মরণ করি.
L0LN1NJ4

2
আমি যখন উত্তরটিতে পদ্ধতিটি এবং মন্তব্যে পদ্ধতিটি চেষ্টা করি তখন এটি কিছুই মুদ্রণ করে না।
রে

@ray যার অর্থ আপনার কার্যকর গাছ এবং সর্বশেষ প্রতিশ্রুতিবদ্ধতার মধ্যে কোনও পার্থক্য নেই
ভ্যালারিজ ভ্যাসিলেনকো

3
@ ক্রেটি এবং ভবিষ্যতের ব্যক্তিরা এটি দেখার জন্য আপনি যে শাখাগুলির মধ্যে পার্থক্য করার চেষ্টা করছেন সেগুলি অন্তর্ভুক্ত করতে পারেন @ git diff master..develop myfolder/ক্র্যান্ডেল ডাব্লুএস মূল প্রশ্নের মন্তব্যে বলেছেন। গিটের স্থিতি আপনাকে যা দেখছে তা যদি আপনাকে পরিবর্তন দেখাতে পারে।
বিভিবিএ

2
@ray নিশ্চিত করুন যে আপনি মূল ডিরেক্টরিতে আছেন। পাথটি আপনার বর্তমান ডিরেক্টরিটির সাথে সম্পর্কিত হবে।
নিকফথিম

59

আপনি যদি বিভিন্ন শাখার তুলনা করছেন তবে আপনার --ফাইল সিস্টেমের পথ থেকে একটি গিট রিভিশন আলাদা করতে হবে । উদাহরণস্বরূপ, দুটি স্থানীয় শাখা সহ masterএবং bryan-working:

$ git diff master -- AFolderOfCode/ bryan-working -- AFolderOfCode/

বা একটি স্থানীয় শাখা থেকে একটি রিমোট:

$ git diff master -- AFolderOfCode/ origin/master -- AFolderOfCode/

29
পাথ / থেকে / Dir - Git পরিবর্তন branch1 branch2: - শুধু এক দফা এ উভয় শাখা তালিকা যেমন পর প্রয়োজন হয়
Emery

4

আপনার এই জাতীয় জিনিসগুলির জন্য ডকুমেন্টেশন দেখার অভ্যাস করা উচিত। এটি খুব দরকারী এবং খুব দ্রুত আপনার দক্ষতা উন্নতি করবে। আপনি যখন করবেন তখন এখানে প্রাসঙ্গিক বিটgit help diff

   git diff [options] [--no-index] [--] <path> <path>

দু'টি <path>আপনাকে প্রশ্নে থাকা ডিরেক্টরিতে পরিবর্তন করতে হবে।


3

যোগ অতুলনীয়ভাবে গীত আপনার difftool যেমন এবং হিসাবে diffdir জন্য একটি alias যোগ করুন:

git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"

গিটডিফটি পান:

git diffdir 4bc7ba80edf6  7f566710c7

রেফারেন্স: তুলনা ছাড়িয়ে ডাব্লু গিট ডিফ্টটিওল + সম্পূর্ণ ডিরেক্টরিগুলির তুলনা করুন


1
সমান চিহ্নটি গিট 2.17.1 এর জন্য ভুল বলে মনে হচ্ছে। git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"পরিবর্তে ব্যবহার করুন
মার্ক শোফার

নোট করুন যে ডিয়ার ডিফের জন্য তুলনা ছাড়িয়ে ব্যবহার করার সময়, আপনাকে এটি সিমলিঙ্কগুলি অনুসরণ করার জন্য কনফিগার করতে হবে (একটি ফোল্ডারে তুলনা দেখুন -> বিধিগুলি (রেফারি আইকন) -> হ্যান্ডলিং -> সিমলিংকগুলি অনুসরণ করুন) বা, --no-symlinksবিকল্পটি যুক্ত করুন যাতে কমান্ডটি পড়েgit difftool --dir-diff --no-symlinks
আশুতোষ জিন্দাল

1

আপনি কেবল একটি পাথ যোগ করতে পারবেন না, তবে git diff --relativeসেই ফোল্ডারের সাথে সম্পর্কিত ফলাফল পেতে আপনি যুক্ত করতে পারেন।

git -C a/folder diff --relative

এবং গিট 2.28 (কিউ 32020) দিয়ে, " diff" পরিবারের কমান্ডগুলি " diff.relative" কনফিগারেশন ভেরিয়েবলকে সম্মান করতে শিখেছে ।

দেখুন c28ded8 কমিট দ্বারা (22 মে 2020) লরেন্ট Arnoud ( spk)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট e34df9a , 02 জুন 2020)

diff: কনফিগার বিকল্প যোগ করুন relative

সাইন-অফ-বাই: লরেন্ট
আর্নউদ আকাড-বাই: ওন ট্রান কং দানহ

diff.relativeথেকে বুলিয়ান বিকল্প সেট trueশো শুধুমাত্র বর্তমান ডিরেক্টরির / দ্বারা নির্দিষ্ট মান পরিবর্তন pathআর্গুমেন্ট relativeবিকল্প এবং শো pathnames উপরোক্ত ডিরেক্টরির আপেক্ষিক।

--no-relativeআগে ওভাররাইড করতে শিখান--relative

গিট-ফর্ম্যাট-প্যাচ (1) বিকল্পের ডকুমেন্টেশন --relativeএবং এর জন্য যুক্ত করুন--no-relative

ডকুমেন্টেশন হিসাবে এখন :

diff.relative:

যদি ' true' এ সেট করা git diffথাকে তবে ডিরেক্টরিটির বাইরে পরিবর্তনগুলি প্রদর্শিত হয় না এবং বর্তমান ডিরেক্টরিটির সাথে সম্পর্কিত পথের নাম প্রদর্শন করা হয়।


0

আপনি যদি সাব-ডিরেক্টরিগুলি বাদ দিতে চান তবে আপনি ব্যবহার করতে পারেন

git diff <ref1>..<ref2> -- $(git diff <ref1>..<ref2> --name-only | grep -v /)

0

বাইন্ডের তুলনা ছাড়াই ডিরেক্টরি ডিফারফের জন্য তুলনা করতে ব্যবহার করুন , এর মতো প্রতীকী লিঙ্কগুলি অনুসরণ করুন মনে রাখবেন:

একটি ফোল্ডারে ভিউবিধিগুলির তুলনা করুন (রেফারি আইকন):

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

এবং তারপরে, প্রতীকী লিঙ্কগুলি অনুসরণ করুন এবং সেশন ডিফল্টগুলি আপডেট করুন:

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


অথবা,

এর মতো উপনাম সেট আপ করুন:

git config --global alias.diffdir "difftool --dir-diff --tool=bc3 --no-prompt --no-symlinks"

মনে রাখবেন যে উভয় ক্ষেত্রেই, পাশের (বাম বা ডানদিকে) তৈরি করা যে কোনও সম্পাদনা বর্তমান কাজের গাছটিকে বোঝায় তা সংরক্ষণ করা হয়েছে।

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