গিট কমিট রেঞ্জের ডাবল-ডট ".." এবং ট্রিপল-ডট "…" এর মধ্যে পার্থক্য কী?


411

কিছু গিট কমান্ড কমিট রেঞ্জ নেয় এবং একটি বৈধ সিনট্যাক্স হ'ল দুটি কম্টের নাম দুটি বিন্দুর সাথে আলাদা করা হয় ..এবং অন্য বাক্য গঠন তিনটি বিন্দু ব্যবহার করে ...

দুই মধ্যে পার্থক্য কি কি?


উত্তর:


250

এটি নির্ভর করে আপনি 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কেস, এটা সব করে যে উ নেই বি রয়েছে কিন্তু দেখায়


31
এটি খুব হাস্যকর যে কীভাবে লগ এবং .....log A..Bdiff A...B
ডিফের

1
@ ফায়ারস্কি হ্যাঁ, এটি সত্যই দুর্বল ব্যবহারযোগ্যতা। আমি বিন্দু চিহ্নিতকরণগুলি ব্যবহার না করার পরামর্শ দিচ্ছি git diff
উইসবাকি

2
এর অর্থ কি A...B== A..B + B..A?
ড্যানন

2
@ ড্যানন এর জন্য git logএকেবারে হ্যাঁ
মাওয়েজম

658

গিট লগ সহ কমিট রেঞ্জ ব্যবহার করা

যখন আপনি কমিট রেঞ্জগুলি এর মতো ..এবং ...সাথে ব্যবহার করেন তখন git logতাদের মধ্যে পার্থক্য হ'ল এ এবং বি শাখার জন্য,

git log A..B

বি এর সাথে যে কমিট রয়েছে তা সমস্ত দেখিয়ে দেবে , যখন

git log A...B

আপনাকে A উভয় যে কমিট করেছে তা খ এবং খ এর দুটোই দেখাবে এবং বি এর সাথে যে A নেই তা করেছে বা অন্য কথায় এটি A এবং B উভয় অংশীদারকেই ফিল্টার করে দেবে, এর ফলে শুধুমাত্র করে দেখাচ্ছে যে তারা না উভয় ভাগ

ভেন ডায়াগ্রাম এবং কমিট ট্রি সহ ভিজ্যুয়ালাইজেশন

এখানে একটি চাক্ষুষ প্রতিনিধিত্ব git log A..B। শাখা বিতে যে কমিট রয়েছে তা কমিট রেঞ্জ দ্বারা প্রত্যাবর্তন করা এটিকে কমিটের পরিসর দ্বারা ফিরিয়ে দেওয়া হয়েছে এবং কমিট ট্রিতে নীল করে গোলাকার করা হয়েছে:

 "গিট লগ এ..বি" ডায়াগ্রামগাছ ঘ

এগুলির জন্য চিত্রগুলি git log A...B। লক্ষ্য করুন যে উভয় শাখার দ্বারা ভাগ করা কমিটগুলি আদেশ দ্বারা ফেরত দেওয়া হয়নি:

 "গিট লগ এ ... বি" ডায়াগ্রামগাছ 2

ট্রিপল-ডট কমিট রেঞ্জকে ...আরও কার্যকর করে তোলা

কোন শাখার সাথে সম্পর্কিত কোন কমিটগুলি দেখায় তা অপশন ...ব্যবহার করে আপনি ট্রিপল-ডট কমিট রেঞ্জটিকে একটি লগ কমান্ডে আরও দরকারী করে তুলতে পারেন --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 রেঞ্জ?

আরো দেখুন


35
এই উত্তরটি আসলে একটি সংক্ষিপ্ত পাঠ্য, উদাহরণ এবং ছবিগুলির সাথে পার্থক্যটি ব্যাখ্যা করে। আমি বর্তমানে শীর্ষস্থানীয় ভোট দেওয়া উত্তরের চেয়ে এটি আরও ভাল পছন্দ করি যা অস্পষ্ট ডকুমেন্টেশনের উদ্ধৃতি দেয়। (টিএল; ডাঃ এই উত্তরের জন্য ধন্যবাদ আমি আসলে পার্থক্যটি বুঝতে পারি))
এরিক

4
@ ক্যাপকেকে আপনি কি এই শব্দটির অর্থ যোগ করতে পারবেন?
মারিয়াস

1
@ মারিয়াস আসলে, এখন আপনি এটি সামনে এনেছেন, আমি নিজেই এগিয়ে যাব এবং আমার উত্তরটিতে সেই অন্য প্রশ্নের সাথে লিঙ্ক করব, নিজের মতো ভবিষ্যতের পাঠকদের জন্য।

2
এটি কি আসলে বিপরীত নয়? ডিগ ডিফ ডিএইচ বি সমস্ত ডিফার্স বা মূলত গিট ডিফ একটি খ। যদিও গিট ডিফ এ ... বি হ'ল কেবলমাত্র পরিবর্তন হয়েছে খ থেকে ক এর শাখা করার পরে।
ওয়েজরোস্কি

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