git - কিভাবে দুটি বিভিন্ন শাখা থেকে ফাইল তুলনা?




git-diff (6)

@ ডাহ্লবিবক দ্বারা প্রস্তাবিত উত্তর দিয়ে সম্মত। আপনি কোড রিভিউ জন্য diff ফাইলে diff লিখতে চান তাহলে নিম্নলিখিত কমান্ড ব্যবহার করুন।

git diff branch master -- filepath/filename.extension > filename.diff --cached

আমার একটি স্ক্রিপ্ট রয়েছে যা এক শাখায় জরিমানা করে এবং অন্যটিতে ভাঙ্গা হয়। আমি পাশাপাশি দুটি সংস্করণ তাকান এবং দেখতে কি ভিন্ন। এই কাজ করার কোনো উপায় আছে?

পরিষ্কার হতে আমি একটি তুলনা টুল খুঁজছেন না (আমি তুলনা তুলনায় ব্যবহার)। আমি একটি git diff কমান্ড খুঁজছি যা আমাকে পরিবর্তিত হয়েছে তা দেখতে মাস্টার সংস্করণটিকে আমার বর্তমান শাখা সংস্করণের সাথে তুলনা করার অনুমতি দেবে। আমি একটি মার্জ বা কিছু মাঝখানে না। আমি শুধু কিছু বলতে চাই

git diff mybranch/myfile.cs master/myfile.cs


আরো আধুনিক সিনট্যাক্স:

git diff ..master path/to/file

ডাবল-ডট উপসর্গ মানে "বর্তমান চলমান ডিরেক্টরি থেকে"। আপনি বলতে পারেন:

  • master.. , উপরের উপরে বিপরীত। এই master হিসাবে একই।
  • mybranch..master , বর্তমান কাজ গাছ ছাড়া অন্য একটি রাষ্ট্র স্পষ্টভাবে উল্লেখ।
  • v2.0.1..master , অর্থাত একটি ট্যাগ উল্লেখ।
  • [refspec]..[refspec] , মূলত কোড কোড হিসাবে সনাক্তকরণযোগ্য কিছু গিট।

এটি করার সর্বোত্তম git diff <source_branch> <target_branch> -- file_path নিম্নোক্ত পদ্ধতিতে git diff ব্যবহার করে: git diff <source_branch> <target_branch> -- file_path

এটি সেই শাখায় ফাইলগুলির মধ্যে পার্থক্য পরীক্ষা করবে। জিটি কমান্ড এবং কিভাবে তারা কাজ করে সে সম্পর্কে আরো তথ্যের জন্য এই নিবন্ধটি দেখুন।


দুটি ভিন্ন শাখার ফাইল তুলনা করার অনেক উপায় রয়েছে:

  • বিকল্প 1: যদি আপনি এন নির্দিষ্ট শাখা থেকে ফাইলটিকে অন্য নির্দিষ্ট শাখায় তুলনা করতে চান তবে:

    git diff branch1name branch2name path/to/file
    

    উদাহরণ:

    git diff mybranch/myfile.cs mysecondbranch/myfile.cs
    

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

  • বিকল্প 2: সহজ উপায়:

     git diff branch1:file branch2:file
    

    উদাহরণ:

     git diff mybranch:myfile.cs mysecondbranch:myfile.cs
    

    এই উদাহরণটি বিকল্প 1 এর অনুরূপ।

  • বিকল্প 3: আপনি যদি আপনার বর্তমান কার্যক্ষেত্রের কিছু শাখাতে তুলনা করতে চান তবে:

    git diff ..someBranch path/to/file
    

    উদাহরণ:

    git diff ..master myfile.cs
    

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


git diff আপনি দুটি commits মধ্যে git diff প্রদর্শন করতে পারেন:

git diff mybranch master -- myfile.cs

অথবা, সমানভাবে:

git diff mybranch..master -- myfile.cs

পরের সিনট্যাক্স ব্যবহার করে, যদি উভয় দিক HEAD হয় তবে এটি বাদ দেওয়া যেতে পারে (উদাহরণস্বরূপ master.. master থেকে HEAD তুলনা করে)।

আপনি আমার mybranch...master আগ্রহী হতে পারেন mybranch...master ( git diff mybranch...master ডক্স থেকে ):

এই ফর্মটি <commit> উভয়ের একটি পূর্ব পূর্বপুরুষের শুরু থেকে দ্বিতীয় এবং <commit> পর্যন্ত <commit> শাখায় থাকা শাখায় পরিবর্তনগুলি দেখতে হবে। git diff A...B git diff $(git-merge-base AB) B সমান git diff $(git-merge-base AB) B

অন্য কথায়, এটি mybranch থেকে বিচ্ছিন্ন হওয়ার পরে master পরিবর্তনগুলির একটি mybranch (তবে তারপরে আমার mybranch থেকে নতুন পরিবর্তন ছাড়া)।

সব ক্ষেত্রে, -- ফাইলের নামের পূর্বে বিভাজক কমান্ড লাইন ফ্ল্যাগের শেষে নির্দেশ করে। এইটি ঐচ্ছিক, যদি যুক্তিটি একটি কমিট বা একটি ফাইল বোঝায় তবে Git বিভ্রান্ত হবে তবে এতে অন্তর্ভুক্ত করাটা খারাপ অভ্যাস নয়। কয়েকটি উদাহরণের জন্য https://.com/a/13321491/54249 দেখুন।

আপনার যদি git difftool তবে একই আর্গুমেন্টটি git difftool করতে পারে।





git-diff