উত্তর:
এটি নির্ভর করে আপনি log
কমান্ড বা কমান্ড ব্যবহার করছেন কিনা তার উপর diff
। ইন log
মামলা, এটা এর man git-rev-parse
ডকুমেন্টেশন:
প্রতিশ্রুতি থেকে পৌঁছনীয় কমিটগুলি বাদ দেওয়ার জন্য একটি উপসর্গ ^ স্বীকৃতি ব্যবহৃত হয়। উদাহরণস্বরূপ ^ r1 r2 এর অর্থ r2 থেকে পৌঁছনীয় প্রতিশ্রুতি থাকে তবে r1 থেকে পৌঁছনীয়গুলিকে বাদ দিন।
এই সেট অপারেশনটি প্রায়শই উপস্থিত হয় যে এর জন্য একটি সংক্ষিপ্তকরণ রয়েছে। যখন আপনার দুটি কমিট r1 এবং r2 রয়েছে (উপরের স্পেসিফাইং রিভিশনগুলিতে বর্ণিত সিনট্যাক্স অনুসারে নামকরণ করা হয়েছে), আপনি r2 থেকে "^ r1 r2" এর মাধ্যমে পৌঁছনীয় সেইগুলি বাদ দিয়ে আর 2 থেকে যেগুলি কমিটস চাইবে তা জিজ্ঞাসা করতে পারেন এবং এটি হিসাবে লেখা যেতে পারে "r1..r2"।
অনুরূপ একটি স্বরলিপি "আর 1 ... আর 2" কে আর 1 এবং আর 2 এর প্রতিসম পার্থক্য বলা হয় এবং এটি "আর 1 আর 2 - নোট $ (গিট মার্জ-বেস - সমস্ত আর 1 আর 2)" হিসাবে সংজ্ঞায়িত করা হয়। এটি কমিটগুলির সেট যা r1 বা r2 এর যে কোনও একটি থেকে পৌঁছনযোগ্য তবে উভয়ই নয়।
যার মূলত অর্থ এই যে আপনি দুটি কমান্ড দুটি শাখার যে কোনওতে পাবেন তবে উভয়ই পাবেন না।
ইন diff
মামলা, এটা এর man git-diff
ডকুমেন্টেশন:
git diff [--options] <commit>...<commit> [--] [<path>...] This form is to view the changes on the branch containing and up to the second <commit>, starting at a common ancestor of both <commit>. "git diff A...B" is equivalent to "git diff $(git-merge-base A B) B". You can omit any one of <commit>, which has the same effect as using HEAD instead.
যা কিছুটা ফাজি। মূলত এর অর্থ এটি অন্য শাখার তুলনায় branch শাখার মধ্যে কেবলমাত্র পার্থক্য দেখায়: এটি আপনার দেওয়া প্রথম প্রতিশ্রুতিবদ্ধতার সাথে সর্বশেষ সাধারণ অঙ্গীকারের সন্ধান করে এবং তারপরে এটি দ্বিতীয় প্রতিশ্রুতিতে পৃথক হয়। কেবলমাত্র এই শাখায় পরিবর্তনের নজরে না নিয়ে এই শাখার তুলনায় compared শাখায় কী পরিবর্তন করা হয় তা দেখার একটি সহজ উপায়।
..
কিছুটা সহজ হয়: ইন git-diff
কেস, এটি একটি হিসাবে একই git diff A B
এবং মাত্র বি বিরুদ্ধে diffs ইন log
কেস, এটা সব করে যে উ নেই বি রয়েছে কিন্তু দেখায়
..
...
log A..B
diff A...B
git diff
।
A...B
== A..B + B..A
?
git log
একেবারে হ্যাঁ
যখন আপনি কমিট রেঞ্জগুলি এর মতো ..
এবং ...
সাথে ব্যবহার করেন তখন git log
তাদের মধ্যে পার্থক্য হ'ল এ এবং বি শাখার জন্য,
git log A..B
বি এর সাথে যে কমিট রয়েছে তা সমস্ত দেখিয়ে দেবে , যখন
git log A...B
আপনাকে A উভয় যে কমিট করেছে তা খ এবং খ এর দুটোই দেখাবে এবং বি এর সাথে যে A নেই তা করেছে বা অন্য কথায় এটি A এবং B উভয় অংশীদারকেই ফিল্টার করে দেবে, এর ফলে শুধুমাত্র করে দেখাচ্ছে যে তারা না উভয় ভাগ ।
এখানে একটি চাক্ষুষ প্রতিনিধিত্ব git log A..B
। শাখা বিতে যে কমিট রয়েছে তা কমিট রেঞ্জ দ্বারা প্রত্যাবর্তন করা এটিকে কমিটের পরিসর দ্বারা ফিরিয়ে দেওয়া হয়েছে এবং কমিট ট্রিতে নীল করে গোলাকার করা হয়েছে:
এগুলির জন্য চিত্রগুলি git log A...B
। লক্ষ্য করুন যে উভয় শাখার দ্বারা ভাগ করা কমিটগুলি আদেশ দ্বারা ফেরত দেওয়া হয়নি:
...
আরও কার্যকর করে তোলাকোন শাখার সাথে সম্পর্কিত কোন কমিটগুলি দেখায় তা অপশন ...
ব্যবহার করে আপনি ট্রিপল-ডট কমিট রেঞ্জটিকে একটি লগ কমান্ডে আরও দরকারী করে তুলতে পারেন --left-right
:
$ git log --oneline --decorate --left-right --graph master...origin/master
< 1794bee (HEAD, master) Derp some more
> 6e6ce69 (origin/master, origin/HEAD) Add hello.txt
উপরের আউটপুটে, আপনি যে master
কমিটগুলির সাথে উপসর্গ করা হয়েছে তা দেখবেন <
, এবং origin/master
এর সাথে সম্পর্কিত কমিটগুলি উপসর্গযুক্ত রয়েছে >
।
কোনও দিন আমি কমিট রেঞ্জগুলি কীভাবে কাজ করে তার জন্য নিজের ব্যাখ্যাটি যুক্ত করতে পারি git diff
তবে আপাতত, আপনি গিট ডিফ কমিটে ডাবল-ডট ".." এবং ট্রিপল-ডট "..." এর মধ্যে পার্থক্য কী তা পরীক্ষা করে দেখতে পারেন now রেঞ্জ? ।