দুটি সংশোধনের মধ্যে কোন ফাইলগুলি পরিবর্তিত হয়েছে তা দেখানো হচ্ছে


2103

আমি দুটি শাখা মার্জ করতে চাই যা কিছু সময়ের জন্য পৃথক করা হয়েছিল এবং কোন ফাইলগুলি সংশোধন করা হয়েছে তা জানতে চেয়েছিলাম।

এই লিঙ্কটি জুড়ে এসেছিল: http://linux.yyz.us/git-howto.html যা বেশ কার্যকর ছিল।

যে শাখাগুলি আমি এসেছি সেগুলির তুলনা করার সরঞ্জামগুলি হ'ল:

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

ভাবছিলাম যে "গিট স্ট্যাটাস মাস্টার..ব্র্যাঞ্চ" এর মতো কিছু আছে কিনা কেবলমাত্র সেই দুটি ফাইলের মধ্যে পৃথক যে ফাইলগুলি see

কোনও নতুন সরঞ্জাম তৈরি না করে, আমি মনে করি এটি এখনই আপনি করতে পারেন এটিই সবচেয়ে কাছের (কোনও ফাইলটি একাধিকবার সংশোধন করা হলে অবশ্যই পুনরাবৃত্তি প্রদর্শন করবে):

  • git diff master..branch | grep "^diff"

ভাবছিলাম যে আমি এখানে কিছু মিস করেছি কিনা ...


12
আরও কতজন এই প্রশ্নের শিরোনাম বিভ্রান্তিকর খুঁজে পান? এটি আসলে দুটি শাখার মধ্যে ফাইলের পার্থক্য সন্ধান করার বিষয়ে। আমি এখানে যা খুঁজছিলাম তা হ'ল একই শাখায় দুটি সংশোধনের মধ্যে ফাইলের পার্থক্য কীভাবে দেখা যায়। নাকি আমি একাই?
সন্দীপন নাথ

4
@ সন্দীপননাথ: গিটের সাথে কোনও পার্থক্য নেই। আপনি সর্বদা স্বতন্ত্র কমিটগুলি উল্লেখ করছেন।
স্যামুয়েল ও'ম্যালি

@ স্যামুয়েলও'ম্যালি আমি সংক্ষেপে নতুন এবং আপাতদৃষ্টিতে সাধারণ ব্রাঞ্চিং কৌশলটি বিবেচনা করে দেখছি যাতে সব শাখা অবশেষে মাস্টার শাখায় একীভূত হয় এবং শেষ পর্যন্ত মাস্টারটি গুটিয়ে ফেলা হয়। এখন, রোলআউটের ইভেন্টটি বিবেচনা করে, যেখানে উত্পাদন ইতিমধ্যে দক্ষতায় রয়েছে তবে টিপটির পিছনে (শেষ রোলআউটটি শেষ মাস্টার সংশ্লেষের পরে ঘটে যদি একটি সংশোধন করে), আমি এই দুটি সংশোধনের মধ্যে পার্থক্য দেখতে চাই, কী ঘূর্ণিত হবে তা সন্ধান করুন। আমি সর্বশেষ সংশ্লেষিত শাখাটি দেখতে চাই না। আমি ভুল হলে আমাকে সংশোধন করুন।
সন্দীপন নাথ

2
@ সন্দীপনাথ: শাখার নাম ব্যবহার না করে আপনি নীচের উত্তরগুলি নিতে পারেন এবং পরিবর্তে কমিট আইডি নির্দিষ্ট করতে পারেন। অথবা আপনি যদি রোল আউট করার সময় ট্যাগ তৈরি করেন তবে তাদের ট্যাগ নামের দ্বারা কমিটগুলি উল্লেখ করুন।
স্যামুয়েল ও'ম্যালি

1
@ সন্দীপননাথ আপনি 2 টি শাখার তুলনা করতে পারবেন না, আপনাকে অবশ্যই পুনর্বিবেচনাটি নির্দিষ্ট করতে হবে। সুতরাং 2 টি শাখার তুলনা 2 টি সংশোধনগুলির সাথে তুলনা করা হচ্ছে।
বাসটিয়েন ভান্ডামমে

উত্তর:


2572

শাখার বিপরীতে বর্তমান শাখা তুলনা করতে master:

$ git diff --name-status master

যে কোনও দুটি শাখা তুলনা করতে:

$ git diff --name-status firstbranch..yourBranchName

আপ পড়ুন git diffমধ্যে সরকারী ডকুমেন্টেশন


2
বাম পাশের প্রতিটি সূচকের অর্থ কী (আমি অনেকগুলি এম এবং ডি এর দেখতে পাচ্ছি)?
googogadgetinternet

15
@ ব্যবহারকারী 446936 - আপনি দেখতে পাচ্ছেন যে গিট স্ট্যাটাস ম্যান পেজে অক্ষরগুলি কী বোঝায় @ কর্নেল.আর / স্পটওয়্যার / এসএসএম / গীত / ডকস / গিট-স্ট্যাটাস এইচটিএমএল - বিশেষত, এম == পরিবর্তিত, ডি == মুছে ফেলা হয়েছে
জেমস ম্যানিং

12
git diff --name-status your_branch...masterআপনার_ব্রাঞ্চ এটি থেকে তৈরি হওয়ার পরে মাস্টারের উপর যে পরিবর্তন এসেছে তা আউটপুট দেয়
রাদু

1
ডাবল-ডট অপারেটর এখানে অতিরিক্ত অতিরিক্ত, কারণ ডিফগুলি জোড়াযুক্ত হয়।
jub0bs

2
আমি অজানা সংশোধন বা পথ পেয়েছি কার্যকারী গাছের মধ্যে না।
সুপারউবারডুপার

408

চেষ্টা

$ git diff --stat --color master..branchName

এটি একই সংখ্যক লাইন ব্যবহার করার সময়, আপনাকে প্রতিটি পরিবর্তন সম্পর্কে আরও তথ্য দেবে।

আপনি যদি অন্যভাবে মার্জ করতে চান তবে পার্থক্যটির আরও পরিষ্কার চিত্র পেতে আপনি শাখাগুলিও ফ্লিপ করতে পারেন:

$ git diff --stat --color branchName..master

77
যদি আপনি (অত্যন্ত প্রস্তাবিত, ইমো) গিট রঙটি চালু ( config --global color.ui true) করেন তবে আপনি - রঙটি এড়িয়ে যেতে পারেন। (আমার কাছে লক্ষ - অলস কীবোর্ড সিন্ড্রোম রয়েছে))
আর্ট সোরি

25
আমি রঙে আপনার সাথে আছি! বিটিডাব্লু আমি বলতে চাইছিলাম git config --global color.ui true- সম্পূর্ণ হতে হবে।
আর্ট সোরি

2
কাজ করে না, ত্রুটিগুলি ছুঁড়ে ফেলে:fatal: ambiguous argument 'master..branchName': unknown revision or path not in the working tree.
টম জ্যাটো - মনিকা

7
@ টোমাজাটো দুঃখিত তবে আপনাকে আপনার শাখার নাম দিয়ে "ব্রাঞ্চনাম" পরিবর্তন করতে হবে।
গেরি

161

এও মনে রাখবেন যে গিটের সস্তা এবং সহজ শাখা রয়েছে। যদি আমি মনে করি যে মার্জটি সমস্যা হতে পারে তবে আমি সংযুক্তির জন্য একটি শাখা তৈরি করি। সুতরাং যদি masterআমি পরিবর্তন করতে পারি তবে আমি মার্জ করতে চাই এবং baআমার শাখাটি যা মাস্টারের কোড দরকার আমি নিম্নলিখিতটি করতে পারি:

git checkout ba
git checkout -b ba-merge
git merge master
.... review new code and fix conflicts....
git commit
git checkout ba
git merge ba-merge
git branch -d ba-merge
git merge master

শেষ ফলাফলটি হ'ল আমি আমার শাখার সাথে স্ক্রু করার আগে একটি নিক্ষেপকারী শাখায় মার্জ করার চেষ্টা করেছি। আমি যদি আমার নিজের জট বেঁধে রাখি তবে আমি কেবল ba-mergeশাখাটি মুছতে এবং আবার শুরু করতে পারি।


4
অসাধারণ. আমি কখনও সেভাবে শাখা প্রশাখার কথা ভাবিনি। আমি মনে করি মার্জ হওয়ার সময় এটিকে "সেরা অনুশীলনের" অংশ হিসাবে বিবেচনা করা উচিত।
এজেলেভ

আপনি যখন বা-মার্জটিকে আবার বায়ে রূপান্তর করলেন, তখন আবার দ্বন্দ্বগুলি সংশোধন করার কোনও সম্ভাবনা নেই?
জোসেফ.বি

2
@ এরিক অ্যান্ডারসন ঠিক আছে, এটি একটি গ্রাফ। এসভিএন একটি স্কুলের ডেস্কের নীচে আঠার মতো লাঠি দেয়। ধন্যবাদ.
জোসেফ.বি


আপনি এটি ছেড়ে দিতে পারে। masterআপনি কোডটি পর্যালোচনা করতে এবং দ্বন্দ্ব সংশোধন করতে কাজ করার সময় যদি নতুন স্টাফ অবতরণ করা হয় তবে এটি কার্যকর হবে reason
এরিক অ্যান্ডারসন

58

যদি কেউ দুটি শাখা থেকে একটি আলাদা ফাইল উত্পন্ন করার চেষ্টা করছে:

git diff master..otherbranch > myDiffFile.diff

2
এটি কার্যকর হয়েছে বিশেষত বড় শাখাগুলিতে প্রচুর পার্থক্য রয়েছে।
vandsh

পার্থক্যটি সত্যিই বড় হলে এটি কার্যকর হয়। ডিফল্টরূপে এটি কনসোলে সমস্ত ভিন্নতা প্রদর্শন করবে না (আমি কেন ভাবছিলাম) কেন কোনও ফাইলের মধ্যে এই ডিফ পাস করা এই জাতীয় ক্ষেত্রে যাওয়ার উপায়।
রোটিমি-সেরা

42

একটি জিইউআই ভিত্তিক পদ্ধতিও রয়েছে।

আপনি gitk ব্যবহার করতে পারেন ।

  1. চালান:

    $ gitk --all
    
  2. কোনও শাখার প্রতিশ্রুতিতে রাইট ক্লিক করুন এবং পপ-আপ মেনুতে এই প্রতিশ্রুতি চিহ্নিত করুন ।

  3. অন্য একটি শাখার প্রতিশ্রুতিতে রাইট ক্লিক করুন এবং এই -> চিহ্নিত প্রতিশ্রুতি বা ডিফ চিহ্নিত প্রতিশ্রুতি -> এটি নির্বাচন করুন

তারপরে ডান নীচের প্যানেলে একটি পরিবর্তিত ফাইলের তালিকা থাকবে এবং বাম নীচের প্যানেলে বিশদ বিবরণ থাকবে।


3
@ ওরিওলোফিল কীভাবে এটি করবেন তা দেখানোর জন্য আমি একটি ভিডিও আপলোড করি। আমি আশা করি এটি আপনাকে সাহায্য করবে।
ইয়ানতাও Xie

বাহ, কেবল আমার জন্য, আমি বিশেষ বোধ করি। ভবিষ্যতের রেফারেন্স এবং অতিরিক্ত গুগল-ফু-র জন্য আমি এটি সুস্বাদু.কম এ বুকমার্ক করেছি।
ওড়ওলোফিল

গুরুতরভাবে আন্ডাররেটেড উত্তর। ধন্যবাদ!
কোশিনা

36

এই ক্ষেত্রে মেল্ড ব্যবহার করে আরও একটি বিকল্প:

git difftool -d master otherbranch

এটি কেবল ফাইলগুলির মধ্যে পার্থক্য দেখতে দেয় না, তবে নির্দিষ্ট ফাইলটিতে নির্দেশ করার ও ক্লিক করার সহজ উপায়ও সরবরাহ করে।


6
ডিফল্ট difftool যেমন সেট মেশানো করতে পারেন: Git কনফিগ --global diff.tool মেশানো
bwv549

1
এটি আমার প্রিয় কারণ এটি আপনার কনফিগার করে যা কিছু ডিফ্টল ব্যবহার করবে।
জোশিয়াহ

ওএসএক্স সমর্থিত নয়। :-(
মাইক এস

@MikeS। দয়া করে এই উত্তরটি stackoverflow.com/a/12815806/151918 চেকআউট করুন এতে OSX এর জন্য নির্দেশাবলী রয়েছে। এটি আমার পক্ষে অন্তত কাজ করে, আশা করি এটি সাহায্য করবে।
rsilva4

খুশী হলাম। তবে এর -dবিকল্প কী ?
স্কটি। নেট

29

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


10
ডেভিড, এটি একটি ভাল বিষয়, যদিও হাতের সামনে কী ঘটছে তা জানতে
পেরে ভাল লাগবে

18

এবং যদি আপনি কেবলমাত্র কিছু নির্দিষ্ট ফাইল (গুলি) এর মধ্যে পরিবর্তনগুলি সন্ধান করছেন তবে:

git diff branch1 branch2 -- myfile1.js myfile2.js

শাখা 1 alচ্ছিক এবং আপনার বর্তমান শাখা (আপনি যে শাখায় রয়েছেন) ডিফল্টরূপে বিবেচিত হবে যদি শাখা 1 সরবরাহ করা হয় না। উদাহরণ:

git diff master -- controller/index.js

15

সহযোগীভাবে কাজ করার সময়, বা একসাথে একাধিক বৈশিষ্ট্যে কাজ করার সময়, এটি সাধারণ বিষয় যে সাধারণ প্রবাহ বা এমনকি আপনার মাস্টারের এমন কাজ রয়েছে যা আপনার শাখায় অন্তর্ভুক্ত নয় এবং ভুলভাবে মৌলিক বিভেদে উপস্থিত হবে।

যদি আপনার আপস্ট্রিম সরে যেতে পারে তবে আপনার এটি করা উচিত:

git fetch
git diff origin/master...

কেবল গিট ডিফ মাস্টার ব্যবহার করে প্রাসঙ্গিক পরিবর্তনগুলি অন্তর্ভুক্ত বা অন্তর্ভুক্ত করতে ব্যর্থ হতে পারে।


10

আপনি যদি ইন্টেলিজ আইডিইএ ব্যবহার করছেন তবে আপনি যে কোনও শাখাকে আপনার বর্তমান কার্যকারী শাখার সাথে তুলনা করতে পারেন। আরও তথ্যের জন্য http://www.jetbrains.com/idea/webhelp/merging-deleting-and-compering-branches.html#d288093e3827 দেখুন । এটি ফ্রি সংস্করণেও উপলব্ধ ।


8

বলতে দুটি শাখা আছে

  • ক (যে শাখায় আপনি কাজ করছেন)
  • বি (অন্য একটি শাখা যার সাথে আপনি তুলনা করতে চান)

শাখা A তে থাকা আপনি টাইপ করতে পারেন

git diff --color B

তাহলে এটি আপনাকে একটি আউটপুট দেবে

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

এই সম্পর্কে গুরুত্বপূর্ণ বিষয়টি

  1. সবুজ রঙের পাঠ্য ভিতরে শাখা এতে উপস্থিত রয়েছে

  2. লাল রঙের পাঠ্য বি শাখায় উপস্থিত রয়েছে


8

এখানে প্রচুর উত্তর রয়েছে, তবে আমি এমন কিছু যুক্ত করতে চেয়েছিলাম যা আমি সাধারণত ব্যবহার করি। আপনি যদি যে শাখাগুলির সাথে তুলনা করতে চান তার মধ্যে যদি আপনি থাকেন তবে আমি সাধারণত নিম্নলিখিতগুলির মধ্যে একটি করি। এই উত্তরের জন্য আমরা বলব যে আমরা আমাদের মাধ্যমিক শাখায় রয়েছি। আপনার সময় কোন ভিউ প্রয়োজন তা নির্ভর করে আপনি কোনটি বেছে নেবেন তার উপর নির্ভর করবে তবে বেশিরভাগ সময় আমি দুটির দ্বিতীয় বিকল্পটি ব্যবহার করছি। আপনি যদি একটি মূল অনুলিপিটিতে ফিরে যেতে চাইছেন তবে প্রথম বিকল্পটি কার্যকর হতে পারে - উভয়ই উপায়, উভয়ই কাজটি সম্পন্ন করুন!

এটি আমাদের যে শাখায় রয়েছে তার সাথে মাস্টারকে তুলনা করবে (যা মাধ্যমিক) এবং মূল কোডটি যুক্ত লাইন হবে এবং নতুন কোডটিকে সরানো রেখাগুলি বিবেচনা করা হবে

git diff ..master

অথবা

এটি যে শাখায় আমরা রয়েছি (যা মাধ্যমিক) এর সাথেও মাস্টারকে তুলনা করবে এবং মূল কোডটি হবে পুরানো রেখা এবং নতুন কোডটি নতুন লাইন হবে

git diff master..

1

আপনি যদি গিথুব / গিথুব এন্টারপ্রাইজ ব্যবহার করছেন তবে /compareউদাহরণস্বরূপ, https://github.com/http4s/http4s/compare আপনি আপনার সংগ্রহস্থল পাথের ইউআরএল ধরে ওয়েব ইউআই ব্যবহার করতে পারেন । আপনি যে শাখা / প্রতিশ্রুতি / ট্যাগটি তুলনা করতে চান তা নির্বাচন করতে পারেন: গিথুব স্ক্রিনশট তুলনা করুন

আর পরিবর্তন URL- এ GitHub ইন্টারফেসে উপস্থাপন করা হবে /compare/{x1}...{x2}কোথায় আছেন x2এবং x1: শাখা / কমিট / উদাহরণস্বরূপ ট্যাগ তোমার তুলনা করতে চাই, হয় https://github.com/http4s/http4s/compare/release-0.18.x ... মাস্টার

আপনি গিথুব ডকে আরও দেখতে পারেন ।




-1

আপনি একটি ভিজ্যুয়াল ডিফ ব্যবহার করতে পারেন ।

উদাহরণস্বরূপ, যদি আপনি সোর্সট্রি ব্যবহার করেন তবে আপনি কেবল লগ ভিউতে যে কোনও দুটি কমিট নির্বাচন করতে পারেন ।

(আমি ব্যক্তিগতভাবে এটির জন্য বেশিরভাগ ক্ষেত্রে একটি জিইউআই ব্যবহার করা পছন্দ করি এবং যারা জিইউআই বিকল্পগুলির সাথে পরিচিত না হতে পারে তাদের জন্য আমি এটি পোস্ট করছি))


-2

আপনি যদি জিইআইআই পছন্দ করেন এবং উইন্ডোজ ব্যবহার করছেন তবে এখানে একটি সহজ উপায়।

  1. WinMerge ডাউনলোড করুন
  2. দুটি শাখা বিভিন্ন ফোল্ডারে পরীক্ষা করে দেখুন
  3. WinMerge ব্যবহার করে ফোল্ডারের তুলনায় একটি ফোল্ডার করুন। আপনি যে শাখাগুলির মধ্যে একটি কাজ করছেন সেগুলি হ'লে আপনি সহজেই পরিবর্তনও করতে পারেন।

এটি সহজতম উপায় নয়, শাখাগুলির মধ্যে পার্থক্যের জন্য আসলে রেপো ডাউনলোড করার দরকার নেই।
স্টেফগোসেলিন

এটি প্রকৃতপক্ষে সহজতম উপায় নয়, তবে এটি জিইউআই উপায়, যা প্রায়শই খুব সহজেই সমস্ত ফাইলের
পার্থক্য

-3

আপনি উদাহরণস্বরূপ টরটোইজিট ব্যবহার করে পরিবর্তিত ফাইলগুলির জন্য শাখাগুলি সহজে তুলনা করতে পারেন । ব্রাউজ রেফারেন্সগুলিতে কেবল ক্লিক করুন এবং আপনার তুলনা করতে চান সেই শাখাগুলি বেছে নিন।

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

Remmber যে আপনি বিভিন্ন ফলাফলের আপনি তুলনা থাকবে মাস্টার সঙ্গে আপনার-শাখা এবং আপনার-শাখা সঙ্গে মাস্টার


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