গিট: বিভিন্ন শাখায় দুটি পৃথক ফাইলের পার্থক্য কীভাবে?


170

আমার বিভিন্ন শাখায় দুটি আলাদা ফাইল রয়েছে। আমি কীভাবে তাদের এক আদেশে পৃথক করতে পারি?

কিছুটা এইরকম

# git diff branch1/foo.txt branch2/foo-another.txt

আমি অন্য ফাইলটি যাচাই করতে পারতাম, এটি আলাদা করে পুনরুদ্ধার করতে পারতাম তবে এটি বেশ নোংরা সমাধান।


3
@ ইউজেনকনকভ এটি কোনও সদৃশ নয় কারণ এই প্রশ্নটি বিভিন্ন শাখায় বিভিন্ন ফাইল কীভাবে পৃথক করতে পারে তা জিজ্ঞাসা করছে । লিঙ্কযুক্ত প্রশ্নটি কেবল একই শাখায় বিভিন্ন শাখায় কীভাবে পৃথক করতে হয় তা জিজ্ঞাসা করে ।
স্টিভ

উত্তর:


214
git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt

আপনি আপেক্ষিক পাথগুলিও ব্যবহার করতে পারেন:

git diff branch1:./relative/path/to/foo.txt branch2:./relative/path/to/foo-another.txt

9
অসাধারণ! আমি অবশ্যই এটি থেকে অনুমান করতে সক্ষম ছিল না git help diff। যাইহোক, তাদের কোলনের আগে শাখার নাম থাকতে হবে না, তবে যে কোনও ধরনের প্রতিশ্রুতিবদ্ধ রেফারেন্স হতে পারে (যেমন SHA-1 মান)।
স্টিভ জর্জেনসেন

3
গুরুত্বপূর্ণ দ্রষ্টব্য: উইন্ডোতে গিটের একটি ইউনিক্স নাম হওয়ার জন্য পুরো আইটেমপ্যাক প্রয়োজন। অর্থাত্ শাখা 1: পূর্ণ \ পথ \ থেকে oo foo.txt ব্যর্থ হয়, যখন শাখা 1: ফুল / পাথ / থেকে / foo.txt পুরো \ পথ \ থেকে full foo.txt (কোনও শাখা নেই) হিসাবে ঠিক কাজ করে
এরিস

ব্যবহার করুন git difftoolএবং তারপরে ফেলে দিন branch2:এবং এটি আপনাকে বর্তমান কার্যকরী গাছের একটি ফাইল সম্পাদনা করার অনুমতি দেবে (এর থেকে পরিবর্তন আনতে branch1)
gMale

গিট সংস্করণ 1.8.3.1 সহ লিনাক্সের চেষ্টা করা হয়েছে, কেবলমাত্র আপেক্ষিক পাথই অনুমোদিত।
সোলা ইয়াং

21

সিডিনোট: পূর্ণ পাথের প্রয়োজন নেই, আপনি ./আপেক্ষিক পাথের জন্য শুরু করতে পারেন । এটি কখনও কখনও সহজ হতে পারে।

git diff branch1:./relative/path/to/foo.txt branch2:./relative/path/to/foo-another.txt

2

দুটি ডিফরেন্ট শাখা থেকে ফাইলগুলি তুলনা করার অনেকগুলি উপায় রয়েছে। উদাহরণ স্বরূপ:

  • নামটি একই বা ভিন্ন হলে:

     git diff branch1:file branch2:file
    

    উদাহরণ:

     git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt
    
  • কেবলমাত্র যদি নামটি একই হয় এবং আপনি আপনার বর্তমান কার্য ডিরেক্টরিটি কোনও শাখার সাথে তুলনা করতে চান:

    git diff ..someBranch path/to/file
    

    উদাহরণ:

    git diff ..branch2 full/path/to/foo.txt
    

    এই উদাহরণে আপনি আপনার প্রকৃত শাখা থেকে ফাইলকে মাস্টার শাখায় থাকা ফাইলের সাথে তুলনা করছেন।

আপনি এই প্রতিক্রিয়া পরীক্ষা করতে পারেন:

গিতে দুটি ভিন্ন শাখা থেকে একটি ফাইলের তুলনা করুন


1

অফ-টপিকের উত্তর - মন্তব্য দেখুন

এটির জন্য কেবল এটি যুক্ত করার জন্য আমি এটি একটি খুব সোজা সরল বাক্য গঠন:

git diff <branch1> <branch2> <filepath>

আপেক্ষিক রেফগুলির সাথে কাজ করে উদাহরণস্বরূপ:

# compare the previous committed state from HEAD with the state branch1 was 3 commits ago
git diff HEAD^ <branch1>~3 <filepath>

1
ওপি বিশেষত "বিভিন্ন ফাইল" চেয়েছিল। আপনার উত্তরটি দুটি ভিন্ন শাখায় একই ফাইলের তুলনা সম্পর্কে।
এটিইন মিরেট

@ এটিইনমিটার আপনি একদম ঠিক বলেছেন, আমি এই গুরুত্বপূর্ণ বিষয়টি মিস করেছি। অফ-টপিকের উত্তর।
রোমেনভ্যালেরি

-1

git diffপ্রয়োগ করার জন্য আপনি একটি সূচনা এবং ব্যাপ্তি নির্দিষ্ট করতে পারেন । পরিসীমাটি ..স্বরলিপি সহ নির্দেশিত হয়।

branch1=somebranch
branch2=someotherbranch
git diff ${branch1}..${branch2} -- file_path

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