উত্তর:
আলাদা হওয়ার সময় গিটটি অটোডেটেক্ট করার জন্য আপনাকে -M ব্যবহার করতে হবে। ব্যবহার করে শুধু git diff
knittl হিসাবে উল্লেখ করেছে আমার জন্য কাজ করে না।
সুতরাং সহজভাবে: git diff -M
এটি করা উচিত।
এই স্যুইচটির জন্য ডকুমেন্টেশন হ'ল:
-M[<n>], --find-renames[=<n>]
Detect renames. If n is specified, it is a threshold on the similarity index
(i.e. amount of addition/deletions compared to the file’s size). For example,
-M90% means git should consider a delete/add pair to be a rename if more than
90% of the file hasn’t changed.
~/.gitconfig
?
git diff
। চলমান git diff -M
একটি একক (নাম পরিবর্তিত হয়ে) ফাইল একটি পুনঃনামকরণ প্রতিবেদন নেই।
git log --follow -- file_after_move.txt
ভাল কাজ করে। এটি স্থানান্তরের আগে সহ পুরো ইতিহাস দেখায়। কোন ধারনা? আমি দৌড়াচ্ছি git version 2.11.0.windows.1
।
-C
কপি detecting জন্য বিকল্প দরকারী এবং অনুরূপ। আমি এটির -M
পরিবর্তনের জন্য এটি ব্যবহার করেছি যেখানে আমি একটি ফাইলকে দুটি করে রিফেক্টর করেছি (নামটির সাথে কোনও মিল নেই)।
নিটল যা লিখেছেন তা ছাড়াও আপনি সর্বদা ব্যবহার করতে পারেন:
git diff HEAD:./oldfilename newfilename
যেখানে HEAD:./oldfilename
বর্তমান ডিরেক্টরি অনুসারে সর্বশেষ প্রতিশ্রুতি (HEAD- এ) পুরানো ফাইলের নাম।
আপনার যদি নতুন পর্যাপ্ত গিট না থাকে তবে আপনার পরিবর্তে এটি ব্যবহার করতে হবে:
git diff HEAD:path/to/oldfilename newfilename
git diff 39fa7c77e85c51d43ea0cf30d33aec8721812e9e:./oldfilename newfilename
git diff branch:old/filen.name newfilename
cd
ডিরেক্টরিতে যোগ --
করেন এবং commit:path
জোড়ার আগে যোগ না করেন তবে প্রথম ফর্মটি আমার জন্য কাজ করে । গিটটি এখানে সিনট্যাক্সের সাথে খুব পিকে বলে মনে হচ্ছে।
<commit-ish>:<pathname>
সিনট্যাক্স হ'ল অবজেক্ট শনাক্তকারী, গিট-ইশ; পরে --
গীত শুধুমাত্র ফাইলের নামের প্রত্যাশা করে।
গিট ২.৯ (জুন ২০১)) এর সাথে আপনাকে -M
আর যোগ করতে হবে না । ডিফল্টরূপে git diff
ব্যবহার -M
করে।
দেখুন প্রতিশ্রুতি 5404c11 , প্রতিশ্রুতিবদ্ধ 9501d19 , প্রতিশ্রুতিবদ্ধ a9276a6 , অঙ্গীকার f07fc9e , 62df1e6 (25 ফেব্রুয়ারী 2016) ম্যাথিউ ময়moy
দ্বারা প্রতিশ্রুতিবদ্ধ ( ) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট 5d2a30d , 03 এপ্রিল 2016)
diff
:diff.renames
ডিফল্টরূপে সক্রিয় করুনপুনঃনামকরণ সনাক্তকরণ একটি খুব সুবিধাজনক বৈশিষ্ট্য এবং নতুন ব্যবহারকারীদের এটি থেকে উপকৃত হওয়ার জন্য ডকুমেন্টেশনটি খনন করা উচিত নয়।
নামকরণ সনাক্তকরণ সক্রিয় করার সম্ভাব্য আপত্তি হ'ল এটি কখনও কখনও ব্যর্থ হয় এবং এটি কখনও কখনও ধীর হয়। তবে "
git status
" এবং "git merge
" এর মতো বেশ কয়েকটি ক্ষেত্রে পুনরায় নাম সনাক্তকরণ ডিফল্টরূপে সক্রিয় করা হয়েছে , সুতরাং সক্রিয়করণটিdiff.renames
পরিস্থিতিটিকে মৌলিকভাবে পরিবর্তন করে না। যখন পুনরায় নাম সনাক্তকরণ ব্যর্থ হয়, এটি এখন "git diff
" এবং "git status
" এর মধ্যে ধারাবাহিকভাবে ব্যর্থ হয় ।এই সেটিংটি নদীর গভীরতানির্ণয় কমান্ডগুলিকে প্রভাবিত করে না, সুতরাং লিখিত স্ক্রিপ্টগুলি প্রভাবিত হবে না।
git diff -M
অন্যরা যেমন বলেছে তেমন নামকরণ সনাক্তকরণকে সক্রিয় করে (এবং @ ভনসি দেখিয়েছে যে এটি গিট ২.৯ থেকে পূর্বনির্ধারিতভাবে সক্রিয় করা হয়েছে)। তবে আপনার যদি একটি বড় চেঞ্জসেট থাকে, অক্ষত পুনর্নবীকরণ সনাক্তকরণটি আবারও বন্ধ হয়ে যেতে পারে। গিট নীচের মত একটি সতর্কতা প্রদর্শন করবে, যা আপনি দেখছেন তার বিভেদগুলির মধ্যে মিস করা সহজ:
warning: inexact rename detection was skipped due to too many files.
warning: you may want to set your diff.renameLimit variable to at least 450 and retry the command.
সেক্ষেত্রে গিটের পরামর্শ অনুসারে কনফিগারেশন বিকল্পটি সেট করুন
git config diff.renamelimit 450
এবং আপনার ডিফ্ট কমান্ডটি পুনরায় রান করুন।
যে কোনও কারণে HEAD:./oldfilename
(বা নিখুঁত পাথ) ব্যবহার করা আমার পক্ষে কাজ করে নি, তবে HEAD:oldfilename
করেছে (ধন্যবাদ সিএমএন):
git diff HEAD:oldfilename newfilename
git diff 2a80f45:oldfilename f65f3b3:newfilename
আছে HTH
HEAD:./oldfilename
?
কেবল git diff
কোনও যুক্তি ছাড়াই চালান , বাgit diff -- newfilename
। ডানদিকের ফাইল / বিষয়বস্তুর তুলনা করার জন্য গিট যথেষ্ট স্মার্ট (যেমন নামের পরিবর্তিত সামগ্রীর সাথে পুনরায় নামকরণের পূর্বে মূল সামগ্রী)
git mv
একটি একক ফাইল ইঙ্গিত করা এবং তারপরে স্টেজযুক্ত রাজ্যের সাথে অন্য কোনও-অভিন্ন শাখার সাথে তুলনা করলে ব্যবহার না করা হলে "সবকিছু মুছে ফেলা এবং পুনরায় পুনরায় তৈরি করা হয়েছিল" আলাদা হবে -M
।
git diff -- yourRenamedFile
যথেষ্ট হবে be দেখুন নিচের আমার উত্তর